ActionScript3.0(AS3.0) – addEventListenerで関数へ引数を渡す
ActionScript3.0でaddEventListener時に関数へ値を渡す方法を、以下の順にサンプルを交えて書いていきたいと思います。
- 直接値を渡す場合
- 変数で渡す場合
- 配列で渡す場合
- 参照先の関数でデータ型を明示したくない場合
- その他
直接値を渡す場合
addEventListener( Event.ENTER_FRAME, func( 'StringParam', 128 ) );
function func( paramA:String, uintB:uint ):Function {
trace( paramA + uintB );
return function( event:Event ):void;
}
変数で渡す場合
var paramA:String = 'StringParam';
var uintB:uint = 128;
addEventListener( Event.ENTER_FRAME, func( paramA, uintB ) );
function func( paramA:String, uintB:uint ):Function {
trace( paramA + uintB );
return function( event:Event ):void;
}
配列で渡す場合
var List:Array = [ 'StringParam', 128 ];
addEventListener( Event.ENTER_FRAME, func( List ) );
function func( List:Array ):Function {
trace( List );
return function( event:Event ):void;
}
関数側でデータ型を明示したくない場合
上記までのサンプルでは参照先の関数でもデータ型を明示していますが、明示せず関数内で型判別するということもできます。
var paramA:Array = [ 'array00', 'array01' ];
var uintB:uint = 128;
addEventListener( Event.ENTER_FRAME, func( paramA, uintB ) );
function func( paramA, uintB ):Function {
trace( paramA is Array );
trace( typeof uintB );
return function( event:Event ):void;
}
その他
以下のような方法で使用をする場合は、removeEventListenerでarguments.calleeを使い、自身へ再帰し明示的にイベントを止める必要があります。
function func( List:Array ):Function {
return function( event:Event ):void {
trace( List );
removeEventListener( Event.ENTER_FRAME, arguments.callee );
}
}


コメントはまだありません。