2014-02-23 72 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