从Flash中的一个按钮我只想调用一个用jQuery编写的函数。
当我把这个函数放在jQuery的$(document).ready之外时它工作正常:
*顺便说一句,我使用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>
答案 0 :(得分:1)
当Flash调用jsFunction
时,它未定义。在进行ExternalInterface调用之后,您有$(document).ready
触发的竞争条件,因此$(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();
});