2009-05-18 70 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(裝載機)

相關問題