2011-01-10 1 views
0

私はその中にボタンがあるメニューMovieClipを持っています。私はMousEvent.CLICKのメニューを持っていて、あなたがクリックしているものを登録する方法を考えようとしています。うまくいけば私はこれについて効率的だ...ありがとう!AS3:クリックしている子オブジェクトを見つける

private function menu_CLICK(e:MouseEvent):void 
    { 
     //this is where I need help on 
     switch (????) 
     { 
      case "books" : 
       showSection("books") 
       break; 
      case "music" : 
       showSection("music") 
       break; 
      default : 

     } 
    } 

    private function showSection(section:String) 
    { 
     switch (section) 
     { 
      case "books" : 
       trace("books"); 
       break; 
      case "music" : 
       trace("music"); 
       break; 
      default : 

     } 
    } 
+0

は、マウスイベントの場合 'target'、 'currentTarget'、 'getObjectsUnderPoint()'などを表示します。プライベート関数menu_CLICK(e:MouseEvent):void {trace(e.currentTarget.name); } –

答えて

2

メニューのMovieClipに1つではなく、各Buttonオブジェクトにイベントリスナーを追加します。

クリックしているオブジェクトインスタンスをe.targetで取得できます。メニューボタンの名前がの場合はif (e.target == books)、舞台名の場合はif (e.target.name == "books")、ボタンに追加するカスタムプロパティはメンバーと比較する必要があります。

+0

私はあなたがクリックしたメニューの子を見つけようとしています。私が十分に具体的でない場合は申し訳ありません。 – Tom

+0

私はすでに先んじていたようです。私は今それを得ていると思う - 私はあなたのための答えを編集しました。 – weltraumpirat

+0

私は、1つのイベントリスナを使用してクリックする各子オブジェクトをより効率的にターゲットにする方法があると考えました – Tom

0

各ネストされたクリップにIDを付けるのはどうでしょうか?

var sections:Array = ['books', 'music', 'other1', 'other2', 'other3'] 

private function assignClips(){ 
    // lets say you have 5 buttons/clips inside of your holder movieclip, each named clip0, clip1, etc 
    for (var i=0; i<sections.length; i++){ 
     var mc = holder.getChildByName('clip'+i) 
     mc.id = i 
     mc.addEventListener.MouseEvent.CLICK, menu_CLICK, false, 0, true) 
    } 
} 

private function menu_CLICK(e:MouseEvent):void 
    var id = e.currentTarget.id 
    var val = sections[id] 
    showSection(val) 
} 

private function showSection(section:String){ 
    trace(section) 
} 
関連する問題