是否可以在DHTML运行时加载openlaszlo swf 10运行时组件?

时间:2012-10-24 06:47:12

标签: openlaszlo lzx

我正在使用目前处于swf 10环境的录音机组件。这会在录制音频时使用麦克风活动级别和其他麦克风API。我目前正在将应用程序转换为dhtml运行时。是否可以在dhtml中使用swf 10组件?

1 个答案:

答案 0 :(得分:2)

OpenLaszlo有一个示例应用程序正是这样做的:musicdhtml application,这里是link to the source code in SVN

您必须创建第二个OpenLaszlo SWF应用程序,并将其嵌入到HTML页面中 - 正如the JSP page中显示的 musicdhtml 示例所示。

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命名空间中被定义为全局var(不是很好的实践)。使用lz.Browser.callJS()时,任何具有您在DHTML中的视图上设置的ID的元素都可以作为目标。