Можно ли загрузить компонент среды выполнения 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(),

Другие вопросы по тегам