【问题标题】:Flex 3 (Action Script): How to access a function from a loaded swf-file?Flex 3(动作脚本):如何从加载的 swf 文件中访问函数?
【发布时间】:2010-05-06 07:04:38
【问题描述】:

我在 ActionScript 中加载了一个 swf 文件。到目前为止没有问题,但我没有找到访问其中一个函数的方法,最好的办法是我可以访问 swf 的 mxml 部分中的 main 函数。

这是属于应该加载和访问另一个 swf 的 swf 的 main-mxml 文件的代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="basket();">

    <mx:Script>
        <![CDATA[
            import mx.controls.SWFLoader;

            private function basket(): void
            {
                var swfLoader: SWFLoader = new SWFLoader();
                swfLoader.addEventListener( Event.COMPLETE, handleSWFLoaded );

                try {
                    swfLoader.load( "../../data/InternalSWF.swf" );
                } catch (error: Error) {
                    trace( "Couldn't load file !" );
                }
            }

            private function handleSWFLoaded( event: Event ): void
            {
                var swfApp:* = event.target.content;

                // This both ways don't work...

                //if (swfApp.hasOwnProperty("initApp")) {
                //  var initApp:Function = (swfApp["initApp"] as Function);
                //  initApp();
                //}

                // swfApp.initApp();
            }
        ]]>
    </mx:Script>

    <mx:Text id="output" width="100%" textAlign="center" />

</mx:Application>

if 语句 "if (swfApp.hasOwnProperty("initApp")) {" 永远不会为真,并且 调用“swfApp.initApp()”表示该函数不存在。

在原始版本中,我为 HTTPStatusEvent.HTTP_STATUS、IOErrorEvent.IO_ERROR 和 SecurityErrorEvent.SECURITY_ERROR 添加了事件侦听器。但是除了 HTTP_STATUS = 0 之外,它们都没有被调用。

我是如何尝试做错的整个想法吗?

【问题讨论】:

    标签: apache-flex actionscript-3 swfloader


    【解决方案1】:

    在帖子发布几天后找到了解决方案:)

    加载 swf 后,您可以使用以下代码访问内部函数(在本例中为 initApp()):

    public function getInnerSWF():Object
    {
      var sysMan:SystemManager = swfLoader.content as SystemManager;<br>
            return sysMan.document;
    }
    
    getInnerSWF().initApp();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 2021-04-15
      • 1970-01-01
      相关资源
      最近更新 更多