我认为您误解了文档。callback
在这种情况下,它只是对 Flash 中的函数的引用,而不是对您调用的内容的回调。
基本上,你用来.call()
从 AS 调用一个 JS 函数;并且您可以.addCallback()
根据名称告诉 Flash Player 应该调用哪个 AS 函数。
在您的示例中,theFunction
将获得一个参数为“foo”,这是引用您的匿名 AS 函数的名称。不知道你为什么要这样传递函数,但如果你需要,你可以从 JavaScript 调用它
function theFunction(callback) {
// .. do something...
swfObject[callback]();
}
现在,如果您无法控制 JS/HTML 方面,我不确定您是否可以这样做。无论如何,不知道你为什么需要 - JS 调用是同步的,就好像它们在同一个线程上运行一样,这意味着 Flash Player 将执行 JS 代码,然后才返回到 Flash Player……你没有等待执行或任何事情。
此外,如果您确实需要在不接触 JS/HTML 端的情况下控制页面,请记住您可以通过注入整段 JS 代码.call
——它不需要是一个简单的函数调用。您可以从 SWF 内部创建整个函数。例如,
var js:XML = <script><![CDATA[
// Javascript code...
]]></script>;
ExternalInterface.call(js);
或者,如果您需要返回数据,您也不需要回调 - 只需执行一个简单的调用,如
// JS
function isNumberZero(__num) {
return __num == 0;
}
// AS
trace ("Is number zero = " + ExternalInterface.call("isNumberZero", 10));
不确定这是否有帮助。如果没有,最好有更多关于你到底想要做什么的信息。