ActionScript3.0(AS3.0) – addEventListenerで関数へ引数を渡す

  • hatena bookmark
  • Twitter
  • Delicious
  • Blogger Post
  • Evernote
  • Google Bookmarks
  • Share/Bookmark

ActionScript3.0でaddEventListener時に関数へ値を渡す方法を、以下の順にサンプルを交えて書いていきたいと思います。

  1. 直接値を渡す場合
  2. 変数で渡す場合
  3. 配列で渡す場合
  4. 参照先の関数でデータ型を明示したくない場合
  5. その他


直接値を渡す場合
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;
}
その他

以下のような方法で使用をする場合は、removeEventListenerarguments.calleeを使い、自身へ再帰し明示的にイベントを止める必要があります。

function func( List:Array ):Function {
	return function( event:Event ):void {
		trace( List );
		removeEventListener( Event.ENTER_FRAME, arguments.callee );
	}
}
  • hatena bookmark
  • Twitter
  • Delicious
  • Blogger Post
  • Evernote
  • Google Bookmarks
  • Share/Bookmark
関連する記事:
  1. FlashとPerlでsocket通信をする方法 (AS3.0)
  2. FlashとCGIとの連携の方法 (AS3.0)
  3. Papervision3D – primitiveとColladaファイル(.dae)の表示方法 (AS3.0)
  4. Papervision3D – ポリゴンにSWFファイルを貼り付ける方法 (AS3.0)
  1. コメントはまだありません。

  1. 2009年 9月 19日
コメント 停止中