« for in | メイン | Flash CS3 が明日で試用期限切れる。 »
2007年6月 7日
[as3] addEventListener についてメモ
import flash.display.Sprite;
import flash.events.Event;
this.addEventListener( Event.ENTER_FRAME , enterframe1 );
this.addEventListener( Event.ENTER_FRAME , enterframe2 );
this.addEventListener( Event.ENTER_FRAME , enterframe2 );
var obj = { };
obj.clipChild = new Sprite();
var grandChild:Sprite = new Sprite();
obj.clipChild.addEventListener( Event.ENTER_FRAME , enterframe3 );
grandChild.addEventListener( Event.ENTER_FRAME , enterframe4 );
obj.clipChild.addChild( grandChild );
this.addChild( obj.clipChild );
function enterframe1( e:Event )
{
trace("enterframe1");
this.removeEventListener( Event.ENTER_FRAME , enterframe1 );
}
function enterframe2( e:Event )
{
trace("enterframe2");
delete obj.clipChild;
this.removeEventListener( Event.ENTER_FRAME , enterframe2 );
}
function enterframe3( e:Event )
{
trace("enterframe3");
trace( obj.clipChild );
obj.clipChild.removeEventListener( Event.ENTER_FRAME , enterframe3 );
}
function enterframe4( e:Event )
{
trace("enterframe4");
grandChild.removeEventListener( Event.ENTER_FRAME , enterframe4 );
}
出力結果は
enterframe1 enterframe2 enterframe3 undefined TypeError: Error #1010: 条件は未定義であり、プロパティがありません。 at test_fla::MainTimeline/enterframe3() enterframe4 enterframe3 undefined TypeError: Error #1010: 条件は未定義であり、プロパティがありません。 at test_fla::MainTimeline/enterframe3() … …以下メモ:
・this参照は Event でもないし、追加したオブジェクトでもなく Function を定義している場所。
・同じ Function は2重に定義できない。
・違う Function であれば同じイベントを複数追加できる。
・removeEventListener を実行する前に そのリスナーオブジェクトを削除するとイベントが消せなくなる。
・enterFrame の実行される順序は、addした順。
トラックバック(0)
このブログ記事を参照しているブログ一覧: addEventListener についてメモ
このブログ記事に対するトラックバックURL: http://system.seyself.com/mt-tb.cgi/411

コメントする