現在swf10環境にあるオーディオレコーダーコンポーネントを使用しています。これは、オーディオの録音中にマイクアクティビティレベルと他のマイクAPIを使用します。現在、アプリケーションをdhtmlランタイムに変換しています。dhtmlでswf10コンポーネントを使用することは可能ですか?
1 に答える
OpenLaszlo には、まさにそれを行うサンプル アプリケーションがあります。
musicdhtmlの例の JSP ページに示されているように、2 つ目の OpenLaszlo SWF アプリケーションを作成し、それを HTML ページに埋め込む必要があります。
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 の再生ボタンで、ボタンがクリックされたときに audioplayer の再生メソッドがどのように呼び出されるかを示しています。
<button width="40" height="22"
onclick="lz.embed.audiokernel.callMethod('audioplayer.play()')" >
そして、onframe
audioplayer.lzx のハンドラー:
<handler name="onframe" args="f">
//Debug.write("Got frame", f);
lz.Browser.callJS('setCanAttr', null, 'frame', f);
</handler>
を使用lz.Browser.callJS()
すると、DHTML アプリケーションの任意のメソッドを SWF ランタイム アプリケーションから直接呼び出すことができます。DHTMLcanvas
は、JavaScript 名前空間でグローバル変数として定義されます (あまり良い方法ではありません)。を使用する場合、DHTML のビューで設定した ID を持つすべての要素をターゲットにすることができますlz.Browser.callJS()
。