我有一个包含“游戏”包的Flash文件,其中包含“Scores”类和方法setValue()。我想写一些允许我调用该方法的Javascript行。有人指导我参加本教程,但我仍然有点困惑。
Javascript: alert("start"); var so; so = document.embeds[0];
so.addParam("allowScriptAccess","always"); import flash.external.ExternalInterface;
ExternalInterface.call("setValue[2600]");
我不确定这个课程是如何运作的?这只是我从该网站上得到的点点滴滴,但我真的不明白它是如何工作的(但最终还是希望)。这是网站:http://bytes.com/topic/flash/answers/694359-how-do-i-access-flash-function-using-javascript。当我执行导入代码时没有任何反应,但是当我没有这个声明时,警报会出现吗?
如果有人可以详细说明我怎么称呼这种方法,我会非常感激! :)
答案 0 :(得分:6)
您拥有的代码是JavaScript和ActionScript的混合。
在ActionScript中,您需要注册setValue函数以供外部使用,因此可以从JavaScript调用它。代码看起来像这样:
package game
{
import flash.display.Sprite;
import flash.external.ExternalInterface;
import flash.text.TextField;
public class Scores extends Sprite
{
public var txtScore:TextField; // A textfield in the sprite
public function Scores()
{
// Register the function for external use.
ExternalInterface.addCallback("setValue", setValue);
}
private function setValue(value:Number):void
{
txtScore.text = String(value);
}
}
}
JavaScript可能看起来像这样:
var so = document.embeds[0];
so.setValue(2600);
答案 1 :(得分:0)
Adobe的文档包含冗长但有用的示例here。它们显示了ActionScript以及JavaScript,以及它们如何以两种方式进行交互。