0

アイテムのマップがあり、マウスがアイテムの上に移動したときを知る必要があります。マウスオーバーとマウスアウトのイベントリスナーを各アイテムに追加する必要がありますか (多数ある場合があります)、またはマウスオーバーとマウスアウトのリスナーをコンテナー全体に追加し、ターゲットにアイテムがあるかどうかを検出するためにいくつかのチェックを行う必要があります。 ?

2 番目の方法では、リッスンしているコンテナー内の各マップ タイルに入ったときにイベントが発生することを意味します。これは少し無意味に思えますが、できるだけ追加しないでください..では、どうすればよいですか?

4

2 に答える 2

2

アイテムが同じことをするだけなら、おそらく最初のものを提案して、オブジェクトに割り当てる単純なクラスを作成します。

package {
  import flash.display.MovieClip;
  import flash.events.MouseEvent;
  public class Item extends MovieClip {
    public function Item() {
      this.addEventLister(MouseEvent.OVER, onMouseOver);
      this.addEventLister(MouseEvent.OUT, onMouseOut);
    }
    private function onMouseOver(e:MouseEvent):Void { trace("mouse over"); }
    private function onMouseOut(e:MouseEvent):Void {trace("mouse out");}
  }
}
于 2010-09-28T22:07:48.637 に答える
1

まあ、好みの問題です。いずれにしても、パフォーマンスの問題は発生しません。ただし、Event.ENTER_FRAME リスナーでは、これはフレームごとに実行されるため、スクリプトの記述には十分注意する必要があります。

上記のように、項目に Mouse-Listner を追加する必要があると思います。リスナーはオブジェクト/アイテムにアタッチされているため、ガベージ コレクターによってアイテムまたはオブジェクトが削除されると削除されます。

于 2010-09-29T13:43:30.213 に答える