2012-10-24 65 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