1

我只想从 Flash 中的一个按钮调用一个用 jQuery 编写的函数。
当我将函数放在 jQuery 的 $(document).ready 之外时,它工作正常:
*btw 我使用 SWFObject 嵌入 Flash。

AS3:

import flash.external.ExternalInterface;
function test_fnc(event:Event):void {
    ExternalInterface.call("jsFunction", "hello world");
}
test_mc.addEventListener("click", test_fnc);

JS:

<script type="text/javascript">     
    function jsFunction(words) {
        alert(words); // "hello world";
    }
    $(document).ready(function() {
        // not from here
    });
</script>
4

1 回答 1

1

在 Flash 调用jsFunction它的时候没有定义。您有一个竞争条件,$(document).ready在调用 ExternalInterface 后触发,因此其中定义的任何内容$(document).ready都不会执行,因此在 Flash 进行调用时不可用。

回应您的评论:

您需要准备好 Flash 和准备好文档以使其正常工作。我不确定初始化顺序是否得到保证,所以我建议您从 Flash 调用一个已知函数,告诉 JS 它已准备好。也许是这样的:

var waitingForItems=2;
function itemReady()
{
    //called from both Flash and $(document).ready
    --waitingForItems;
    if(waitingForItems==0)
    {
        //create your array
        //send to Flash by calling Flash rather having Flash call JS
    }
}
$(document).ready(function(){
    itemReady();
});
于 2010-03-02T00:57:25.587 回答