在fdt中将javascript变量值传递给swf
我是FDT的新手,我想把javascript变量值传递给FDT代码。 我不知道怎么做 HTML代码:在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文件链接 或者还有其他的方法吗?请
<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.确保您的varmoduleID
是可访问的(即全局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选项。希望这能奏效。