Можно ли загрузить компонент среды выполнения openlaszlo swf 10 во время выполнения DHTML?
У меня есть компонент для записи звука, который в настоящее время находится в среде SWF 10. При этом используется уровень активности микрофона и другие параметры микрофона при записи звука. В настоящее время я конвертирую приложение в dhtml runtime. Можно ли использовать компонент SWF 10 в HTML?
1 ответ
В OpenLaszlo есть пример приложения, которое делает именно это: приложение musicdhtml, здесь ссылка на исходный код в SVN.
Вы должны создать второе SWF-приложение OpenLaszlo и вставить его в HTML-страницу, как показано на странице JSP для примера 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, поэтому невидим. Интеграция обоих приложений достигается путем вызова lz.embed.audiokernel.callMethod()
вне приложения SWF и с помощью lz.Browser.callJS()
в приложении DHTML.
Вот кнопка воспроизведения в audioplayer.lzx, показывающая, как вызывается метод воспроизведения аудиоплеера при нажатии кнопки:
<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. DHTML canvas
определяется как глобальная переменная (не очень хорошая практика) в пространстве имен JavaScript. Любой элемент с идентификатором, установленным для представления в DHTML, может быть целевым при использовании lz.Browser.callJS()
,