0

私はプロジェクトを引き継ぎました、そして私はas3に本当に新しいです!うまくいけば、最初からやり直すことなく、未解決の問題を修正する必要があります。

私はcontaner_mcを持っており、4つのpuppet_mc(、、、puppet_mc1)を保持しておりpuppet_mc2、各puppet_mcは4つのボタン(、、、)を保持しpuppet_mc3ています。puppet_mc4buddy_bnt_1buddy_bnt_2buddy_bnt_3buddy_bnt_4

どのボタンがクリックされ、どの人形からそのボタンがクリックされたかをリスナーに知らせる必要がありますか?

Object(this).contaner_mc.puppet_mc?.buddy_bnt_?.addEventListener(MouseEvent.CLICK, fl_Click);

function fl_Click(event:MouseEvent):void
{
    gotoAndPlay(15);
}

アドバイスをいただければ幸いです。

4

2 に答える 2

1

イベントバブリングは魔法にすべきです:

container_mc.addEventListener(MouseEvent.CLICK, click_handler);

function click_handler(event:MouseEvent):void {
  if (event.currentTarget == event.target) {
    return; // the container is the dispatcher
  }

  const sprite:Sprite = event.target as Sprite; // just for a typing
  if (!sprite) {
    trace("event.target is no sprite, set break point here for debugging.");
    return;
  }

  if (sprite.name == 'buddy_bnt_1' || sprite.name == 'puppet_mc1') {
    // do something
  } else if (sprite.name == 'buddy_bnt_2' || sprite.name == 'puppet_mc2') {
    // do something different
  } else if (sprite.name == 'buddy_bnt_3' || sprite.name == 'puppet_mc3') {
    // do something different
  } else if (sprite.name == 'buddy_bnt_4' || sprite.name == 'puppet_mc4') {
    // do something different
  }
}
于 2012-12-29T21:38:22.610 に答える
0
container_mc.addEventListener(MouseEvent.CLICK, clickHandler);

function clickHandler(event:MouseEvent):void
{
    var clickedObject:DisplayObject = event.target as DisplayObject;

    trace (clickedObject.name);   // name of button clicked
    trace (clickedObject.parent.name);  // name of the parent
}

コードがスプライト、ムービークリップ、または任意のDisplayObjectで機能するように、DisplayObjectを使用しました。したがって、まだインポートしていない場合は、必ずインポートしてください。

import flash.display.DisplayObject;
于 2012-12-30T23:10:24.340 に答える