将一个变量从ExternalInterface.call()返回到Flash

时间:2010-02-17 10:27:28

标签: javascript flash actionscript-3 actionscript

我正在使用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;

5 个答案:

答案 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的建议。

此致