2

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

4

1 回答 1

2

OpenLaszlo 有一个示例应用程序可以做到这一点:musicdhtml 应用程序,这里是SVN 源代码的链接

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

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,因此是不可见的。通过调用lz.embed.audiokernel.callMethod()SWF 应用程序和lz.Browser.callJS()在 DHTML 应用程序中使用来实现两个应用程序的集成。

这是 audioplayer.lzx 中的播放按钮,显示了单击按钮时如何调用音频播放器的播放方法:

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

以及onframeaudioplayer.lzx 中的处理程序:

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

使用lz.Browser.callJS()您可以直接从 SWF 运行时应用程序中调用 DHTML 应用程序中的任何方法。DHTMLcanvas被定义为 JavaScript 命名空间中的全局变量(不是一个很好的做法)。使用lz.Browser.callJS().

于 2012-10-24T11:10:13.530 回答