【问题标题】:Can an AS2 swf be loaded into an AS3 swf? How can I add this to the stage and interact with it from As3 swf?可以将 AS2 swf 加载到 AS3 swf 中吗?如何将它添加到舞台并从 As3 swf 与其交互?
【发布时间】:2010-06-24 06:21:42
【问题描述】:

我正在尝试将用 AS2 编写的 swf 加载到 AS3 swf - 使用 Loader 类并监听 Event.COMPLETE。在我的 onCompleteHandler 函数中,我想将它添加到舞台上,所以我正在尝试 -

addChild(evt.currentTarget.content) 

...但我收到以下错误消息:

Error #2180: It is illegal to move AVM1 content (AS1 or AS2) to a different part of the displayList when it has been loaded into AVM2 (AS3) content.

AS2 swwf 有很多代码,如果可以避免的话,我真的不想迁移到 AS3。任何人都知道这是否可能或知道将加载的 swf 添加到舞台的不同方法。那么如何在加载的 swf 中调用函数呢?

这是一个代码sn-p -

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
var request:URLRequest = new URLRequest("testLoadSwf.swf");
loader.load(request);

function onCompleteHandler(evt:Event) {
   addChild(evt.currentTarget.content);
}

谢谢大家。

【问题讨论】:

    标签: actionscript-3 migration actionscript-2 loader addchild


    【解决方案1】:

    唯一真正有效的方法是使用 LocalConnection。 AS2 和 AS3 之间无法进行太多通信。如果您仍然可以访问 AS2 文件的源代码,则可以使用 LocalConnection 公开一些函数。还有一个由 Grant Skinner 编写的名为 SWFBridge 的简洁的助手类,它为此做了一些基础工作,它可以在这里找到:http://www.gskinner.com/blog/archives/2007/07/swfbridge_easie.html

    【讨论】:

      【解决方案2】:

      var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); var request:URLRequest = new URLRequest("testLoadSwf.swf"); loader.load(request);

      函数 onCompleteHandler(evt:Event) { //addChild(evt.currentTarget.content); } addChild(加载器)

      【讨论】:

        猜你喜欢
        • 2010-10-03
        • 1970-01-01
        • 2010-12-06
        • 2011-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-26
        • 1970-01-01
        相关资源
        最近更新 更多