Javascript as3的ExternalInterface.addCallback不';行不通
我想从JS调用AS函数 我有以下ActionScript 3代码:Javascript as3的ExternalInterface.addCallback不';行不通,javascript,flash,actionscript-3,externalinterface,Javascript,Flash,Actionscript 3,Externalinterface,我想从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()
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)
怎么了?我用这个来查找电影。这似乎更可靠:
function thisMovie(movieName) {
var movie;
try
{
movie = document[movieName];
movie = (movie == null) ? window[movieName] : movie;
}
catch (e)
{
return null;
}
return movie;
}
我还发现,当从本地文件系统运行时,ExternalInterface不能正常工作。您是否尝试过从Web服务器运行此功能
也有可能你看到了比赛状态。。。也许您正在尝试在PlaySound注册为回调之前调用它。如果在进行调用之前稍等一下会发生什么情况?我认为问题在于,当您尝试从JS调用SWF文件时,SWF文件尚未加载。但是obj没有方法PlaySound()(obj不是null)。->这是什么意思?您是否尝试在as3 PlaySound方法中跟踪某些内容?这意味着JavaScript对象obj没有方法PlaySound。但是obj不是空的——所以,这个函数是正确的。我已经找到了解决方案,请参阅下一个答案。谢谢。是的,当我试着从Web服务器而不是本地文件系统运行它时,它是有效的。非常感谢。