2009-10-15 26 views
0

我有一個main.swf,它內部只是一個普通的容器movieclip。使用Loader函數,我在該容器中加載一個名爲content.swf的外部swf。 Container.swf裏面有一個按鈕。 現在,當外部swf加載到位於main.swf階段的容器mc中時,我想通過單擊加載的外部swf的按鈕移動到另一個框架。 如果我嘗試從主時間軸控制它,我得到錯誤說如何從外部swf控制主時間軸

cannot convert flash.display::[email protected] to flash.display.MovieClip. 

如果我嘗試從外部SWF控制它,我可以跟蹤到點擊的按鈕,但時間表不會移動到想要的框架。

回答

2

從錯誤消息看來,您似乎試圖將加載程序轉換爲影片剪輯。改爲使用loader.content屬性。

var mc:MovieClip = loader.content as MovieClip; 
//do whatever you want with mc 
+0

但請記住:「以ActionScript 1.0或2.0編寫的SWF文件(作爲AVM1Movie對象加載)無法跨腳本編寫以ActionScript 3.0編寫的SWF文件,這些文件以Sprite或MovieClip對象加載,您可以使用LocalConnection類讓這些文件相互溝通。「 – Konrad 2009-10-15 13:13:39

0

我做了這樣的:

var loaderPath:URLRequest = new URLRequest("content.swf"); 
var loader:Loader = new Loader(); 
loader.load(loaderPath); 
var mc:MovieClip = loader.content as MovieClip; 
container.addChild(mc); 

並在此之後我收到此錯誤:

類型錯誤:錯誤#2007:參數孩子必須爲非空。 在flash.display一::級DisplayObjectContainer /的addChild() 在index_fla :: MainTimeline /幀1()

0

確保您使用的事件處理程序,如圖here因爲你的情況loader.content尚未加載「的內容。瑞士法郎「,但當你嘗試將其添加到您的容器。

而且最好是投這樣的:

var mc:MovieClip = MovieClip(loader.content); 

原因很簡單,那是因爲「不會拋出你的錯誤是你想投的對象爲空或不能被鑄造。