Javascript as3的ExternalInterface.addCallback不';行不通

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()

我想从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)


怎么了?

我用这个来查找电影。这似乎更可靠:

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服务器而不是本地文件系统运行它时,它是有效的。非常感谢。