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

在fdt中将javascript变量值传递给swf,javascript,jquery,fdt,Javascript,Jquery,Fdt,我是FDT的新手,我想把javascript变量值传递给FDT代码。 我不知道怎么做 HTML代码: <a id="player" href="javascript:void(0)" data-id="02">ABCD</a> <a id="flash_bridge_link" href="#" onclick="javascript:void(0)">Click Me</a> 在FDT中,id为02的是SWF文件链接 或者还有其他的方法吗?请

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

HTML代码:

<a id="player" href="javascript:void(0)" data-id="02">ABCD</a>
<a id="flash_bridge_link" href="#" onclick="javascript:void(0)">Click Me</a>
在FDT中,id为02的是SWF文件链接

或者还有其他的方法吗?请帮帮我


感谢adcance。

您需要在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>
var flashObj=document.getElementById('flashObject');
示例如下:


在google上搜索“javascript/as3桥”

除了@bFunc提到的内容之外,如果可能的话,我可能会建议您在锚定标记之外执行
onclick
事件。我发现最好将通过JS接收操作的元素作为目标,而不是嵌入HTML代码中。通过这种方式,您可以将
flashObj.changeText
调用包装在
try/catch
中,以避免JS错误(可能发生),并适当地处理错误(例如,如果您的SWF不可用或未加载,例如当用户未安装Flash Player时)

例如:

HTML代码:

<a id="player" href="javascript:void(0)" data-id="02">ABCD</a>
<a id="flash_bridge_link" href="#" onclick="javascript:void(0)">Click Me</a>

希望有帮助

非常感谢你的评论,但我不明白。你能用语言详细说明一下吗?请我在上面只提到了一个href链接,但有多个href链接。这是为不同文本的不同链接工作吗?正如您上面所说的
函数更改文本
,它必须写在哪里?我不知道怎么做。请帮帮我。嘿,谢谢你的回答。如果我在.as文件中使用它,它可以工作,但是在.mxml文件中它不能正常工作。还有其他方法吗?嗯。根据你的评论,我用Flash Builder 4.6创建了一个Hello World示例来构建我的SWF。一切都适合我。它使用SWFObject将SWF嵌入到页面中,上面我的答案中的JS逻辑包含在
$(document.ready()之后以确保SWF写入页面。在MXML代码中,在
addedStatage
事件之后设置外部接口,以确保SWF已初始化并准备就绪。简言之,确保SWF已初始化,并且JS不会调用它,直到
$(document).ready()
被触发。嘿,谢谢,我找到了我做错的地方。我仍然在某一点上陷入困境。我在javascript中的变量为
var moduleID=10并希望访问mxml文件中的值10。我正在做的是
Alert.show(“id是:”+moduleID)但其警报id为:0。我做错了什么。尽快回复。可能是几件事。1.确保您的var
moduleID
是可访问的(即全局var,未在函数内声明,等等)。如果您对此不确定,请在谷歌上搜索“JavaScript变量范围”,并确保它在全局级别可访问。2.或者,创建一个可以从Flash调用的JS函数,该函数将返回变量。例如,JS函数可以是:
函数getModuleID(){return moduleID;}
。然后,在Flash中,引用它并将Flash变量设置为其值,如下所示:
var-flashModuleID:Number=ExternalInterface.call('getModuleID')另外,我注意到您在上一条评论中的代码是
Alert.show(“id是:”+moduleID),我假设它是MXML文件中的ActionScript代码。您不能直接从AS代码中引用JS变量(或任何JS代码),而不使用
ExternalInterface
。因此,请尝试我在上一篇评论中概述的#2选项。希望这能奏效。