将javascript变量值传递给fdt中的swf

时间:2013-05-10 13:03:22

标签: javascript jquery fdt

我是FDT的新手,我想将javascript变量值传递给FDT代码。 我不知道该怎么做。

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文件链接。

或者还有其他办法吗?请帮帮我。

感谢adcance。

2 个答案:

答案 0 :(得分:2)

你需要在swf中使用ExternalInterface来捕获来自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 bridge”

答案 1 :(得分: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.
    }
}

希望它有所帮助!