1

從Flash中的按鈕我只想調用一個用jQuery編寫的函數。
當我把函數放在jQuery的$(document).ready之外時,它工作正常:
* btw我使用SWFObject來嵌入Flash。Flash AS3 ExternalInterface調用jQuery文檔中的函數準備

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

這真的不清楚你在問什麼。爲什麼需要在$(document).ready中定義一個函數? – spender 2010-03-02 00:54:07

+0

我需要訪問與jQuery創建一個陣列。 \t \t \t \t VAR alt_array = $( 「#縮略圖IMG」)地圖(函數(){ \t \t \t \t \t回$(本).attr(「ALT 「); \t \t \t \t}); – FFish 2010-03-02 00:57:44

回答

1

在閃存使得它不定義爲jsFunction通話時間。在發生ExternalInterface調用後,您有一個競爭條件$(document).ready正在觸發,因此在$(document).ready中定義的任何內容都尚未執行,因此在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(); 
}); 
+0

謝謝你的答案。最後,看到了光..我只是定義var alt_array之外的doc.ready,並可以從Flash訪問數組。現在我仍然需要使它與IE7一起工作。 – FFish 2010-03-02 13:00:22