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 ); } }
コメントはまだありません。