我想从JS调用AS函数。
我有以下ActionScript 3代码:
package {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.external.ExternalInterface;
public class Main extends Sprite {
public function Main()
{
ExternalInterface.addCallback("PlaySound", PlaySound);
}
public function PlaySound():void
{
}
}
}
我需要从JavaScript调用函数PlaySound()。我试着用以下方式做到这一点:
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName];
} else {
return document[movieName];
}
}
function m()
{
var obj=thisMovie("Main");
obj.PlaySound();
}
但是obj没有方法PlaySound()(obj不是null)。
怎么了?
答案 0 :(得分:3)
我用这个来找电影。它看起来更可靠:
function thisMovie(movieName) {
var movie;
try
{
movie = document[movieName];
movie = (movie == null) ? window[movieName] : movie;
}
catch (e)
{
return null;
}
return movie;
}
我还发现从本地文件系统运行时,ExternalInterface无法正常工作。你试过从网络服务器上运行它吗?
你也可能会看到竞争条件......也许你正试图在PlaySound注册为回调之前调用它。如果你在打电话之前稍微等一下会怎么样?
答案 1 :(得分:0)
我认为问题是当您尝试从JS调用SWF文件时尚未加载。