1

我试图从 ActionScript 调用一个非常简单的 JavaScript 函数,但我似乎无法让它工作。这是我的代码:

JavaScript

function alert() {
    alert("hi");
}

动作脚本

ExternalInterface.call("alert");

HTML

<object width="500" height="500"
        classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"            
        codebase="http://fpdownload.macromedia.com/
        pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0">
        <param name="SRC" value="FlashApp.swf"/>
    <param name="allowScriptAccess" value="always" />
    <embed src="FlashApp.swf" width="500" height="500" allowScriptAccess="always">                
    </embed>
</object>
4

2 回答 2

1

也许是因为已经有了警报功能?这对我有用。

//js
function myAlert() {
    alert("hi");
}

//as3
ExternalInterface.call("myAlert");

AS3 代码:

public class Main extends Sprite 
{
    public function Main():void 
    {
        if (stage) init();
        else addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event = null):void 
    {
        removeEventListener(Event.ADDED_TO_STAGE, init);
        // entry point
        ExternalInterface.call("myAlert");

    }

}
于 2013-05-24T22:50:45.890 回答
0

确保在调用该方法之前初始化 javascript。真的,取决于运气,除非你努力工作。我怀疑 Baris Usakli 的电脑速度很快,而且 js 的初始化速度比 swf 快。

当 javascript onload 事件发生时,使用 swfobject 嵌入 swf。这样你就知道 js 函数存在并且你可以调用它。

加分点,swf 对象为大多数(如果不是全部)浏览器嵌入了它,没有大惊小怪,开销可以忽略不计。

于 2013-05-24T23:32:17.000 回答