2013-05-10 24 views
2

我是非常新的FDT,我想將javascript變量值傳遞給FDT代碼。 我不知道該怎麼做。在fdt中傳遞javascript變量值到swf

HTML代碼:

<a id="player" href="javascript:void(0)" data-id="02">ABCD</a> 

JavaScript代碼:

$('.list a').click(function(){ 
    var id = $(this).data("id"); 
} 

在FDT,id爲02有SWF文件的鏈接。

或者還有其他方法可以做到嗎?請幫幫我。

非常感謝。

回答

2

您需要使用ExternalInterface的在SWF,捕捉功能,通過JavaScript調用

import flash.external.ExternalInterface; 

if (ExternalInterface.available){ 
    ExternalInterface.addCallback("changeText", changeTheText); 
} 

function changeTheText(t:String):void { 
    txtText.text = t; 
} 

JavaScript代碼

var flashObj = document.getElementById('flashObject'); 
<a href="#" onClick="flashObj.changeText('it works!');">Click me!</a> 

這裏舉例: http://www.hardcode.nl/archives_155/article_334-call-javascript-function-from-as3-and-viceversa.htm

谷歌搜索「的JavaScript/AS3橋「

+0

非常感謝評論,但我沒有得到它。你能用文字來詳細說明嗎?請。我只提到過一個href鏈接,但有多個href鏈接。這是否適用於不同文本的不同鏈接? 正如你上面所說'功能changeTheText',它必須寫在哪裏?我不知道該怎麼做。請幫幫我。 – Aakanksha 2013-05-11 05:33:22

0

除了@bFunc提到的內容之外,如果可能的話,我可能會建議您在定位標記之外執行onclick事件。我發現最好的目標是通過JS接收操作的元素,而不是嵌入在HTML代碼中。這樣,您可以將flashObj.changeText調用包裝爲try/catch以避免JS錯誤(可能發生),並適當地處理錯誤(例如,如果您的SWF不可用或未加載,例如用戶未安裝Flash Player )。

例如:

HTML代碼:

<a id="flash_bridge_link" href="#" onclick="javascript:void(0)">Click Me</a> 

的Javascript:

var flashLink = document.getElementById("flash_bridge_link"); 
var flashObj = document.getElementById("flashObject"); 
flashLink.onclick = function() { 
    try { 
     flashObj.changeText("it works!"); 
    } catch (error) { 
     // Handle error as needed. 
    } 
} 

希望它能幫助!

+0

嘿謝謝你的回答。如果我在.as文件中使用它,但它在.mxml文件中沒有正確工作,還有其他方法可以嗎? – Aakanksha 2013-05-13 06:19:54

+0

嗯。我使用Flash Builder 4.6編寫了一個Hello World示例,以根據您的評論構建我的SWF。一切都適合我。它使用SWFObject將SWF嵌入到頁面中,而我上面的答案中的JS邏輯包含在'$(document).ready();'之後,以確保將SWF寫入頁面。在MXML代碼中,ExternalInterface的東西是在'addedToStage'事件之後建立的,以確保SWF被初始化並準備就緒。簡而言之,確保SWF已初始化,並且直到'$(document).ready()'被觸發時,JS纔會調用它。 – 2013-05-13 14:11:18

+0

嘿謝謝,我得到了我在做錯的地方。我仍然堅持一點。我在JavaScript中將變量設置爲'var moduleID = 10;'並且想要在mxml文件中訪問值10。我做'Alert.show(「id是:」+ moduleID);'但它提醒id是:0。我做錯了。 儘快回覆。 – Aakanksha 2013-05-14 06:16:33