2010年7月10日土曜日

AS3でイベントリスナーに引数を渡す

ActionScript3.0でイベントリスナーにイベント以外の引数を渡す方法。
自分は2つの方法を使ってます。てかそれ以外のやり方は知らない。
グローバル変数を増やしたくないときとかに使ってます。

クリック数をカウントするプログラム。
2つ目と3つ目は基本的にやってることは変わらないと思う。
// グローバル変数を使う
public class event extends Sprite
{
    private var a:int = 0;
    public function event()//constructor
    {
        stage.addEventListener(MouseEvent.CLICK, onClick);
    }

    private function onClick(e:MouseEvent):void
    {
         trace(++a);
    }
}
// Functionを返す関数を作る
public class event extends Sprite
{
    public function event()//constructor
    {
        var a:int = 0;
        stage.addEventListener(MouseEvent.CLICK, onClick(a));
    }

    private function onClick(a:int):Function
    {
        return function(e:MouseEvent):void
        {
            trace(++a);
        };
    }
}
// 無名関数使う
public class event extends Sprite
{
    public function event()//constructor
    {
        var a:int = 0;
        stage.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void
        {
            trace(++a);
        });
    }
}

0 件のコメント:

コメントを投稿