我正在使用ExternalInterface.call调用JS函数并尝试在Flash中获取返回值。当我追踪op变量时,我得到0而不是500.我的嵌入代码有问题吗?
嵌入代码:
<embed src="/sites/default/files/flash/flashgame/Preload.swf" width="975" height="572" align="middle" FlashVars="entry=login" quality="high" bgcolor="#ffffff" name="slider" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
JS:
function get_current_points(){
// Hardcoded return value for testing
return 500;
}
的ActionScript:
var op:Number = ExternalInterface.call("get_current_points") as Number;
答案 0 :(得分:1)
@knuckfubuck,我认为你没有使用RobertBak指出的正确的函数名。否则,当我在我的m / c上运行代码时,代码就完全没了。
@ OXMO456,'Number'与此问题无关。在这种情况下,'Number(Ext ....)'和'Ext .. as Number'都正常工作。
希望它有所帮助, 发亮的。
=============================================== ================================
@khuckbuck回应你的评论,我确信这个功能在Flex中不可见。尝试在flex中使用'if(ExternalInterface.available)'来检查接口是否可以灵活访问。这将有助于我们指出问题。
答案 1 :(得分:1)
另外,我认为您无法从外部接口调用中获取返回值。我认为你需要设置一个回调函数。 ActionScript调用JavaScript,然后JS使用单独的函数调用AS。
如果你必须等待每个跨脚本调用的返回值,它可能会使你的电影慢慢爬行。
答案 2 :(得分:0)
只是在这个例子中,还是你的函数名称不匹配?
因为如果没有获得有效的返回值,则该值应为NaN而不是0。
否则你的代码似乎是正确的。
答案 3 :(得分:0)
我认为你得到0因为你正在使用:as Number
。
改为使用Number(ExternalInterface.call("get_current_points"))
。
答案 4 :(得分:0)
获取Flash中的返回值存在风险。它在所有浏览器上都无法正常工作。实际上我正在重写我的代码因为Internet Explorer拒绝发回返回的值。我建议使用Justin Putney的建议。
此致