У меня проблема с моим ExternalInterface.
Способ, которым он настроен в данный момент, заключается в том, что при загрузке страницы логическое значение устанавливается равным true в JavaScript, а затем проверяется конструкторами ActionScript (с использованием таймера), пока оно не станет истинным. Это означает, что JavaScript готов принимать вызовы от AS3.
На этом этапе AS3 добавит обратный вызов и выполнит некоторые внутренние операции, а в конце конструктора я вызову JavaScript. Все идет нормально. В этот момент JavaScript будет вызывать функцию в AS3 (которая была определена в обратном вызове, описанном выше), и именно здесь все портится.
В IE это прекрасно работает. На FireFox это не так. Когда я отлаживаю его, я вижу, что вызывается функция javascript, но когда она пытается вызвать AS3, ничего не происходит. Я также пытался добавить таймер, но по какой-то причине функция STILL выполняется сразу (в IE).
Что очень странно, что через секунду или две эта функция будет работать, поэтому кажется, что Flash не полностью загружен в FireFox? Но он работает до последней строки моего конструктора, так что я думаю, что он загружен.
РЕДАКТИРОВАТЬ: на самом деле я сделал попытку / поймать, и JavaScript возвращает мне «TypeError: this.version не является функцией». Второй вызов «версии» действительно работает:
Controller.init = function() {
try {
_mainController.getVersion(); // This one does not work
}
catch (err) {
error = err.toString();
}
}
Controller.addFiles = function(JSON, numberOfFiles) {
alert(error);
try {
_mainController.getVersion(); // This one works
}
catch (err) {
alert(err.toString()); // This one is never called
}
}
Во время init, который вызывается из конструктора в AS3, он выдаст ошибку, но позже, если JavaScript вызывает getVersion () из addFiles, он работает (точно такая же функция).
Любая идея, пожалуйста, я действительно застрял.
Большое спасибо,
Rudy