Я установил флаг isFlashReady в JS как FALSE.Затем, когда ваш SWF-файл загружен, после запуска Event.ADDED_TO_STAGE я добавляю ExternalInterface.addCallback и переворачиваю флаг isFlashReady в TRUE.Это предотвращает вызов SWF до его готовности.Возможно, вы захотите бросить alert () в функции JS ниже, чтобы увидеть, где он застрял.Надеюсь, это поможет.
JS:
var isFlashReady = false;
function thisMovie(movieName)
{
if (navigator.appName.indexOf("Microsoft") != -1)
return window[movieName];
}else{
return document[movieName];
}
function callToActionScript(value)
{
if(isFlashReady)
{
thisMovie("SWFID").sendToActionScript();
}
}
function flashReady(value)
{
isFlashReady = true;
}
AS:
if (ExternalInterface.available) {
try {
ExternalInterface.addCallback("sendToActionScript", callFromJavaScript);
flash.external.ExternalInterface.call(flashReady,true);
} catch (error:SecurityError) {
trace("A SecurityError occurred: " + error.message + "\n");
} catch (error:Error) {
trace("An Error occurred: " + error.message + "\n");
}
} else {
trace("External interface is not available for this container.");
}