2010年07月15日

addEventListener

addEventListenerの覚書

(1)gotoAndStop()で移動する場合は注意!
例えば、下のような配置の場合
addEventListener1.bmp
this.gotoAndStop(15);

btn.addEventListener('click', onBtn);
function onBtn(e:MouseEvent):void{
trace(currentFrame);
}

ジャンプ先でもイベントリスナーは有効になっており、15と出力される。

しかし、下のような配置の場合
addEventListener2.bmp
ジャンプ先では、イベントリスナーは無効になっており、何も出力されない。
この場合は、ジャンプ先で、再度イベントリスナーを追加しなければならない。

//フレーム15のスクリプト
btn.addEventListener('click',onBtn);

リスナー関数は1フレーム目に定義してあるので、呼び出すだけで良い。

同じリスナー関数を重複して追加しても、2度実行されることはない。


(2)リスナー関数に引数を渡す方法
関数内で、イベントを受け取る関数を作成する。
関数内で作成された関数は、ローカル変数をそのまま使える。

//リスナー関数
function myFunc(param){
return funcion (event:MouseEvent):void{
trace(param);
trace(event);
}
}

//引数となる変数の作成
var param:String = "引数";

//イベントリスナーの登録
stage.addEventListener('click', myFunc(param));

出力結果
引数
[MouseEvent type="click" bubbles=true cancelable=false eventPhase=2
localX=82 localY=87 stageX=82 stageY=87 relatedObject=null
ctrlKey=false altKey=false shiftKey=false buttonDown=false delta=0]

変数paramを使わなくてもそのまま値を引数にしてもOK。


posted by K at 10:26| Comment(0) | スクリプト | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。