从JS调用AS3方法

时间:2015-01-09 20:01:09

标签: javascript actionscript-3 flash

我已经看到了这方面的问题,但是在查看了所有这些并匹配我的代码后,我无法获得正确的效果。我试图从JS调用一个简单的AS3方法。

如下:

AS3:

    private function InitialiseCallbacks():void
{
    ExternalInterface.call("FlashReady");
    ExternalInterface.addCallback("ReturnMall", ReturnToMall);
}

    public function ReturnToMall():void
    {
        trace("ReturnMall: WORKED"); // Not being called

        this.mall_map.visible = false;
    }

使用Javascript:

                        function FlashReady()
                    {
                        swf = document.getElementById("CaviaGame");
                        console.log(swf);
                    }

        function ShoppingMallClicked()
        {
                        $(".shoppingmallbtn").effect("shake", { times:3 }, 5);

                        console.log(swf);
                        swf.ReturnMall();
        }
        <div align="center" id="flashContent">
        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="760" height="760" name="CaviaGame" id="CaviaGame" align="top">
            <param name="movie" value="CaviaGame.swf" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#FFFFFF" />
            <param name="play" value="true" />
            <param name="loop" value="true" />
            <param name="wmode" value="window" />
            <param name="scale" value="showall" />
            <param name="menu" value="true" />
            <param name="devicefont" value="false" />
            <param value="true" name="swLiveConnect" />
            <param name="salign" value="" />
            <param name="allowScriptAccess" value="always" />
            <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="CaviaGame.swf" width="760" height="760">
                <param name="movie" value="CaviaGame.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#FFFFFF" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="window" />
                <param name="scale" value="showall" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param value="true" name="swLiveConnect" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="always" />
            <!--<![endif]-->
                <a href="http://www.adobe.com/go/getflash">
                    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                </a>
            <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>
    </div>

Javascript控制台:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="760" height="760" name="CaviaGame" id="CaviaGame" align="top">
Uncaught TypeError: undefined is not a function

从我可以看到它识别出对我的swf的引用,但是没有认识到它中有一个函数,或者没有调用它。我已经完成了从AS3到Javascript的回调,它在检索对swf的引用之前成功调用。但是,在调用该函数时,它仍然无效。

我允许在html中的swfObject中访问,我也在AS3中尝试过Security.allowDomain()也无济于事。

我自己没有创建整个项目,但是我在项目中看到了这个代码:

        public function initializeMapViewerModule()
    {

            global.GameMode = "LoadingMapViewer";

            // Initiate MapViewer Load
            var queue:LoaderMax = new LoaderMax({name:"MapViewerQueue", onComplete:onLoadMapViewerModule});         
            queue.append( new SWFLoader("CaviaMapViewer.swf", {name:"CaviaMapViewer", estimatedBytes:5000, x:0, autoPlay:false}) );         
            queue.load();               

    } // END - initializeMapViewerModule

这可能是引用的一个包含代码的另一个swf吗?或者它是从html输入的swfObject调用的?如果是另一个我将如何引用它?

任何建议都表示赞赏,因为我真的为此搜索过重而且感到难过。

谢谢!

0 个答案:

没有答案