«Современный» обновленный способ внедрения флеш-объекта, согласно Adobe:
<object id="theFlash" name="theFlash" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
width="400" height="225" align="middle">
<param name="movie" value="theflashfile.swf" />
<param name="allowScriptAccess" value="always" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash"
data="getStreamFrame.swf" width="400" height="225">
<param name="allowScriptAccess" value="always" />
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflash">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
При попытке вызвать функцию AS3 в SWF из Javascript:
var flashObj = document.getElementById('theFlash');
flashObj.someASFunction();
(и на стороне AS:)
import flash.external.*;
function someASFunction() {
//show some text
}
ExternalInterface.addCallback("someASFunction", someASFunction);
Этот не работает в Firefox и Chrome.Вспышка работает и загружается.flashObj получает ссылку на объект, но someASFunction не определена и не вызывается.
Если я заменю тег объекта на тег embed:
<embed id="theFlash" name="theFlash" height="225" width="400" align="middle"
type="application/x-shockwave-flash" allowscriptaccess="always"
src="theflashfile.swf" />
Тогда он работает в Firefox и Chrome (функция AS вызывается и работает правильно) - (хотя она не работает в IE).
Почему это не работает с тегом объекта?Насколько «безопасно» использовать тег embed вместо тега object?Разве это не устарело?
Обратите внимание, что это определенно не проблема синхронизации - если я вызываю функцию AS из JS из функции onclick - тогда результаты совпадают.