« デザイナーのためのActionScript講座 ― 第7回:続・オブジェクトと関数 | メイン | スクリプトに用いられる英単語の読みを調べてみた »

2007年11月20日

[as2] 既存のメソッド実行時に他の関数を同期させる

ってことをするために作ったクラス
SyncMethod クラス
import com.seyself.utils.SyncMethod;
var obj = {};
var tgt = {};
obj.execution = function( a )
{
  trace("execution : "+a);
}
tgt.sync1 = function( a )
{
  trace("sync1     : "+a);
}
function sync2( a )
{
  trace("sync2     : "+a);
}
obj.execution( "exec 1" );
trace("----");
SyncMethod.synchronize( obj , "execution", tgt.sync1  );
SyncMethod.synchronize( obj , "execution", sync2  );
obj.execution( "exec 2" );
trace("----");
SyncMethod.remove( obj , "execution", tgt.sync1  );
obj.execution( "exec 3" );
trace("----");
EventDispatcher に似ていますが、すでに定義された関数の内部を変更せず、呼び出し元の記述の変更もしないで、追加呼び出しを定義することが出来ます。
onEnterFrameとかonReleaseでも使えます。
_array.push()とかでも使えます。

ただし、引数の値は呼び出した関数に渡された引数が設定されます。
また関連して実行された関数はスコープが、登録したメソッドを持つオブジェクトに変更されますので使う際は要注意。

今回はAS2用に書いたけど、AS3でも一部書き換えれば同様のことができました。
ただAS3での必要性は今のところ感じないけども。

投稿者 michi : 2007年11月20日 16:04

« デザイナーのためのActionScript講座 ― 第7回:続・オブジェクトと関数 | メイン | スクリプトに用いられる英単語の読みを調べてみた »

トラックバック

このエントリーのトラックバックURL:
http://system.seyself.com/mt-tb.cgi/207

コメント

コメントしてください




保存しますか?