2012-10-24 29 views

回答

2

OpenLaszlo有一個示例應用程序正在做這個:musicdhtml application,這裏是link to the source code in SVN

您必須創建第二個OpenLaszlo SWF應用程序,並將其嵌入到HTML頁面中 - 如the JSP pagemusicdhtml示例所示。

lz.embed.swf({url: 'audiokernel.lzx?lzt=swf', bgcolor: '#eaeaea', width: '0', height: '0', id: 'audiokernel'}); 
lz.embed.dhtml({url: 'main.lzx?lzt=object&lzr=dhtml&_canvas_debug=false', bgcolor: '#ffffff', width: '100%', height: '150', id: 'lzdhtmlapp'}); 

正如您所見,audiokernel.lzx的寬度和高度設置爲0,因此是不可見的。通過在SWF應用程序中調用lz.embed.audiokernel.callMethod()並在DHTML應用程序中使用lz.Browser.callJS()來實現兩個應用程序的集成。

這裏是audioplayer.lzx播放按鈕,顯示當單擊按鈕時audioplayer的打法方法被稱爲:

<button width="40" height="22" 
     onclick="lz.embed.audiokernel.callMethod('audioplayer.play()')" > 

而且在audioplayer.lzx的onframe處理程序:

<handler name="onframe" args="f"> 
    //Debug.write("Got frame", f); 
    lz.Browser.callJS('setCanAttr', null, 'frame', f); 
</handler> 

使用lz.Browser.callJS()您可以直接從SWF運行時應用程序中調用DHTML應用程序中的任何方法。 DHTML canvas在JavaScript名稱空間中被定義爲全局變量(不是很好的做法)。在使用lz.Browser.callJS()時,任何具有您在DHTML視圖上設置的ID的元素都可以成爲目標。

+0

我還沒有意識到musicdhtml示例應用程序,這很好理解。 – 2012-10-24 13:55:44