2016-10-27 10 views
0

私はこの問題の解決策を探しましたが、いくつかの古い投稿を見つけても問題を解決できないようだが、特定のタスク。だから私は誰かがもっと普遍的な何かを提案できるかどうかを確認するためにこれをもう一度持ち出すことを望んでいた。CreateJS(アニメーションCC)は、クリック時にムービーインスタンス名を取得します。

ムービークリップが鳴っているのを聞いて内部にスイッチがあり、ムービークリップの名前によっては何らかのアクションがとられます。 CreateJSはムービークリップの名前をピックアップしていないようですので、私は自分のムービークリップに自分自身を割り当てていますが、どうすれば簡単にクリックできますか?

this.parentMovie.button1.name = "button1"; 
this.parentMovie.button2.name = "button2"; 
this.parentMovie.button3.name = "button3"; 

this.parentMovie.button1.addEventListener("click", onClick.bind(this)); 
this.parentMovie.button2.addEventListener("click", onClick.bind(this)); 
this.parentMovie.button3.addEventListener("click", onClick.bind(this)); 

function onClick(e) 
{ 
    console.log(this.parentMovie.button1.name); // returns the name of the movieclip just fine, so I know at least that is carried over. 

    switch(/* what do I need to put here?? */) // in AS3 it was e.target.name and it worked great. In JS it returns as null 
    { 
     case "button1": 
      // do something 
      break; 

     case "button2": 
      // do something 
      break; 

     case "button3": 
      // do something 
      break; 
    } 
} 

はどうもありがとうございました:AS3では、ここに私のコードの抜粋だe.target.name

で簡単に行われていました!

答えて

3

nameプロパティは自動的には作成されません(ただし、そうでなければなりません)。

function onClick(e) 
{ 
    console.log(this.parentMovie.button1.name); // returns the name of the movieclip just fine, so I know at least that is carried over. 

    switch(e.currentTarget) // Use currentTarget since the button might have children 
    { 
     case this.parentMovie.button1: 
      // do something 
      break; 

     case this.parentMovie.button2: 
      // do something 
      break; 

     case this.parentMovie.button3: 
      // do something 
      break; 
    } 
} 

それはあなたがやろうとしているものを達成すべきである:あなたのswitch文は、だけではなく、変数の参照を使用して、簡単にする必要があります。

+0

e.targetの代わりにe.currentTargetが実際に動作するはずです。 だから、upvoted。 – tatactic

+0

完璧、ありがとう!正しいとマークアップupvoted! – anton980

+0

ありがとう、これは確かに良いようです。しかし、このオブジェクトの比較は非常に重いですか? '.name'を使用して文字列を比較することがより効率的であると私は信じています。 – Danyright