2014-02-23 71 views
0

我試圖在介紹屏幕完成播放後創建intro screen,然後start screen無法訪問嵌套的MovieClip AS3

我認爲這樣做的最簡單方法是在場景1幀1上,我會創建一個 MovieClip

順便提一下,這是一個單獨的文檔文件。所以我給了它一個文檔類名稱mcStartGameScreen,並將其與Flash Develop關聯起來。

現在在第1幀的MovieClip,我給出了一個實例名稱startMenu,然後在startMenu MovieClip中有一個MovieClip,我希望buttonMode啓用爲true。我在我的startMenu框架(65)上添加了名爲mcStart的MovieClip。

現在在我的操作我有這樣的:

public class mcStartGameScreen extends MovieClip 
{ 

    private var mcStart:MovieClip; 

    private var startMenu:MovieClip; 

    public function mcStartGameScreen() 
    { 
     startMenu.mcStart.buttonMode = true; //This is giving me the ERROR! 

     mcStart.addEventListener(MouseEvent.CLICK, startOnClick);   
    } 

    private function startOnClick(e:MouseEvent):void 
    { 
     dispatchEvent(new Event("START_GAME")); 
    } 

    public function hideScreen():void 
    { 
     this.visible = false; 
    } 

    public function showScreen():void 
    { 
     this.visible = true; 
    }  
} 

當我測試的電影,我得到這個 error: Cannot access a property or method of a null object reference.

有誰知道我做錯了嗎?

回答

2

如果你已經有了一個MovieClip放置在舞臺上的實例名startMenu,所以沒有必要,

private var startMenu:MovieClip;你從你的代碼中刪除此。

並且總是首先執行階段實例,然後繼續。

所以修改你的構造函數,像這樣:

public function mcStartGameScreen() 
{ 
    addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); 
} 

private function onAddedToStage(e:Event):void 
{ 
    startMenu.mcStart.buttonMode = true; //Now this will not give the ERROR! 

    startMenu.mcStart.addEventListener(MouseEvent.CLICK, startOnClick); 
} 
+0

但是當我刪除私人VAR STARTMENU:影片剪輯;我得到這個新的錯誤:無法訪問空對象引用的屬性或方法。可能會發生什麼? – Nathan

+0

你的'startMenu'在哪裏?在圖書館或舞臺上。 –

+0

我的'startMenu'正在舞臺上。實例名稱爲「startMenu」。它沒有鏈接到AS或任何東西 – Nathan