1
正如您可以通过标题所知道的,我在AS3 ExternalInterface和jQuery/swfobject中遇到了一些问题。jQuery swfobject AS3 ExternalInterface不工作
的ActionScript:
if (ExternalInterface.available) {
ExternalInterface.call('init');
ExternalInterface.addCallback('testFunc', returnFunc)
}
function returnFunc():void {
ExternalInterface.call('alertFunc');
}
的jQuery:
function init() {
alert('init');
$('#swf_object').testFunc();
}
function alertFunc() {
alert('finished');
}
显然,这意味着该对象的ID为 'swf_object'
我也曾尝试通过以下获取对象:
document.getElementById('swf_object')
document.getElementById('swf_object')[0]
$('#swf_object')[0]
无济于事。
它给出了第一个警报('init'),但没有做最后一个。我完全困惑,希望有人能指出我的错误! (有必然是地方大规模明显的一个)
我知道这将是简单的事情!我对ActionScript非常陌生,但那是非常明显的!我曾期待ActionScript继续阅读代码(如JavaScript),但事实证明它等待函数(如PHP)。我记得当我学习JavaScript时遇到了相反的问题,期待它等待函数的执行! – 2012-01-14 22:53:45
@Andrew:AS3和JS(在浏览器中)在这方面实际上非常相似 - 都在单线程环境中托管,因此大量使用异步函数。但是,无论何时你调用一个函数,它都是一个同步操作(在我所能想到的所有语言中)。协调这两个概念的诀窍是启动异步操作*的函数将运行同步操作* - 它不会立即执行整个操作(只是第一个位)。 – Cameron 2012-01-14 23:00:58