2009-05-18 66 views
2

我正在尝试将AS2中写入的swf加载到AS3 swf中 - 使用Loader类并侦听Event.COMPLETE。在我onCompleteHandler功能我想它添加到舞台所以我试着 -AS2 swf可以加载到AS3 swf中吗?我如何将它添加到舞台上并从As3 swf与它进行交互?

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中的函数呢?

下面的代码片段 -

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); 
} 

感谢所有。

回答

2

唯一真正有效的方法是使用LocalConnection。 AS2和AS3不能相互通信。如果您仍然可以访问AS2文件的源代码,则可以使用LocalConnection公开一些函数。格兰特斯金纳还有一个名为SWFBridge的整洁的帮手类,它需要做一些这方面的基础工作,可以在这里找到:http://www.gskinner.com/blog/archives/2007/07/swfbridge_easie.html

0

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){add_Child (evt.currentTarget.content);} } addChild(装载机)

相关问题