2012-06-30 17 views
0

我對AS3有一些問題。我有一個Movieclip,我已經將它添加到舞臺addChild(gameLevelSelect);addChild與內部影片剪輯進行通信

事情是我也有其他的動畫片段,但不像addChild只是在舞臺上addChild(gameLevelSelect);。我給了一個符號實例名稱stageThumb_01,但它不起作用。我該如何解決這個問題?

這是代碼:

gameLevelSelect.getChildByName("stageThumb_01").addEventListener(MouseEvent.CLICK, load_Level01); 
function load_Level01(e:MouseEvent):void { 
    trace("blam") 
    gameLevelSelect.getChildByName("stageThumb_01").getChildByName("stars").gotoAndPlay(2); 
} 

.................................. ...............

gameTitle.addEventListener(Event.ENTER_FRAME, load_LevelSelection); 
function load_LevelSelection(event:Event):void { 
    if(MovieClip(gameTitle).currentFrame == 22){ 
     removeChild(gameTitle); 
     addChild(gameLevelSelect); 

     addChild(thumbLevel01); 

     thumbLevel01.getChildByName("stars").gotoAndPlay(1); 

     gameLevelSelect.gotoAndPlay(1); 

    } 
} 

var thumbLevel01 = new stageThumb01(); 
thumbLevel01.x = 83; 
thumbLevel01.y = 161; 

thumbLevel01.addEventListener(MouseEvent.CLICK, load_Level01); 
function load_Level01(e:MouseEvent):void { 
    trace("blam") 
    //thumbLevel01.getChildByName("stars").gotoAndPlay(2); 
} 

這樣做的原因是,我使thumbLevel01成爲addChild。 但這不是我想要的。我有一個movieclip添加到舞臺上作爲addChild(gameLevelSelect);並在該movieclip有動畫和按鈕 而不是做一個鏈接,我想保持它作爲一個動畫片段addChild(gameLevelSelect);.我想知道的是如何在addChild(gameLevelSelect);中與實例名稱的影片剪輯進行通信。我試過

gameLevelSelect(theAddClass).getChildByName(「thumbLevel01」)。getChildByName(「stars」)。 < ..stars 是thumbLevel01中的一個movieClip。然後 addEventListener(MouseEvent.CLICK,load_Level01);

[addChild - gameLevelSelect] 。 。 。 。 。 。 。 >帶實例名稱的movieClip - thumbLevel01(不添加子項)。 。 。 。 。 。 。 。 。>具有實例名稱的movieClip - starsMeter(用於分數)。

+0

請幫助! =( – user1492440

+0

什麼是不行的?你的事件處理程序不會觸發?有運行時錯誤?在代碼示例中使用addChild查看你的'gameLevelSelect'變量可能會有所幫助。 –

+1

我嘗試了很多事情仍然沒有成功。 – user1492440

回答

0

你問這個問題的方式很呆板,所以我不能理解你真正要問的核心問題,但我懷疑發生了什麼是你想要在他們之前訪問孩子'添加到您通過代碼添加的實例的階段中。

一般而言,您不想直接訪問兒童。相反,您添加的組件應公開屬性和方法,以便您可以執行您需要執行的操作,同時還要考慮MC的構建方式的具體細節。例如:

class ShowMessage extends MovieClip { 
    public var tf:TextField;//this is public so the Flash player can fill it, not for external use 
    private var _message:String; 
    public function get message():String { 
     return _message; 
    } 
    public function set message(value:String):void { 
     _message = value; 
     if (tf) { 
     tf.text = value; 
     } 
    } 
} 

對於其他的方式來處理時間表和AS的混合物,退房Combining the Timeline with OOP in Flash