我的 ExternalInterface 有问题。
当前设置的方式是,在页面加载时,在 JavaScript 中将布尔值设置为 true,然后由 ActionScript 构造函数(使用计时器)检查,直到它为 true。这标志着 JavaScript 已准备好接收来自 AS3 的调用。
此时,AS3 将添加回调并做一些内部工作,并在构造函数的末尾调用 JavaScript。到现在为止还挺好。JavaScript 将在此时调用 AS3 中的函数(在上述回调中定义),这就是一切都搞砸的地方。
在 IE 上,这工作得很好。但在 Firefox 上,它没有。当我调试它时,我看到调用了 javascript 函数,但是当它尝试调用 AS3 时,没有任何反应。我还尝试添加一个计时器,但由于某种原因,该函数仍会立即执行(在 IE 中)。
很奇怪的是,一两秒后,那个功能就起作用了,看来Flash没有完全加载到FireFox中?但它运行到我的构造函数的最后一行,所以我相信它已经加载了。
编辑:我实际上做了一个 try/catch,JavaScript 给了我一个“TypeError:this.version is not a function”。第二次调用“版本”实际上有效:
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
}
}
在从 AS3 中的构造函数调用的 init 期间,它会抛出错误,但稍后如果 JavaScript 从 addFiles 调用 getVersion() 则它可以工作(完全相同的函数)。
请有任何想法,我真的被困住了。
非常感谢,鲁迪