ВопросКогда Javascript начнет вызывать ActionScript?
Есть не-опросным путем для Javascript командовать Flash-право, когда его внешний интерфейс готов?
фон
В Actionscript, я зарегистрировал функцию Javascript для вызова:
ExternalInterface.addCallback('doStuff", this.doStuff);
Я использую SWFObject встроить Flash, в моей странице:
swfobject.embedSWF(
'flash/player.swf',
'flashPlayer',
'100%',
'100%',
'9',
'expressInstallSwfTODO.swf',
{},
{allowfullscreen: true},
{},
function(status) {
if (!status.success) {
alert('Failed to embed Flash player');
} else {
$('flashPlayer').doStuff();
}
}.bind(this)
);
SWFObject позволяет запускать код, когда Flash был успешно внедрен через обратный вызов. Я пытаюсь запустить $ ('flashPlayer'). DoStuff в этом обратном вызове, но он утверждает, что он не определен. Кажется, что Flash нужно некоторое время, чтобы загрузить свой внешний интерфейс. Таким образом, я использовал избирательный хак, чтобы выяснить, когда внешний интерфейс готов:
new PeriodicalExecutuer(
function(poller) {
if ($('flashPlayer').doStuff) {
$('flashPlayer').doStuff();
poller.stop()
}
},
0.2
);
Это Poller не является идеальным. Есть визуально заметная задержка в выполнении doStuff, и это делает мою общую структуру кода грязной.
OnLoad будет гладкой но медленнее. Выбирайте. –