1

関数を使用して AS3 スクリプトを作成しました

public function sayHello():String
{
    return "Hello";
}

次のようにコールバックも登録しました

ExternalInterface.addCallback("sayHello", sayHello);

私のjavascriptでは、次のようにSWFファイルを埋め込みました

<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
  swfobject.embedSWF("HelloWorld.swf", "HelloWorld", "1", "1", "9.0.0");
</script>

しかし、sayHello次のようにメソッドを呼び出そうとすると

document.getElementById("HelloWorld").sayHello();

私は得ていますUncaught TypeError: Cannot call method 'sayHello' of undefined

どんな助けでも大歓迎です!

4

1 に答える 1

1

swf がまだロードされていない場合はdocument.getElementById("HelloWorld")undefined が返されるため、エラーが発生します。その数秒後に呼び出すことで、これが当てはまるかどうかを試すことができます。

setTimeout(function() {
    document.getElementById("HelloWorld").sayHello();
},5000);

また、body onload イベントで呼び出される関数内にそのコードを配置します。

...
<head>
<script>

function onload() {
    setTimeout(function() {
        document.getElementById("HelloWorld").sayHello();
    },5000);
}

</script>
...
</head>

<body onload="onload()">
...
</body>
于 2013-06-28T12:32:39.470 に答える