« スクリプトでのイージングアニメーション | メイン | ムービークリップの階層を出力 »

2007年8月29日

[as2] Functionの呼び出し元(caller)のスコープを調べる

AS2 にて
デバッグ用に作ったもの。
渡されたスコープから辿って3階層以内に見つからなければ null を返します。
class FunctionUtil
{
  public static function getCallerScope( func:Function , scope:Object ):Object
  {
    if( scope==undefined ) scope = _root;
    var maxLevel = 4;
    var level = (arguments[2]==undefined)? 0 : arguments[2];
    if( func ){
      for(var val in scope){
        if( typeof( scope[val] )=="function" ){
          if( scope[val]==func ){
            return { scope:scope , functionName:val };
          }
        } else {
          if(level<maxLevel){
            if( typeof( scope[val] )=="movieclip" || typeof( scope[val] )=="object" ){
              var res = getCallerScope( func , scope[val] , level+1 );
              if( res ) return res;
            }
          }
        }
      }
    }
    return null;
  }
}
例:
function calleeFunc()
{
  var res = FunctionUtil.getCallerScope( arguments.caller , this._parent );
  trace(res.scope);
  trace(res.functionName);
}

トラックバック(0)

このブログ記事を参照しているブログ一覧: Functionの呼び出し元(caller)のスコープを調べる

このブログ記事に対するトラックバックURL: http://system.seyself.com/mt-tb.cgi/434

コメントする


画像の中に見える文字を入力してください。

しばらく時間が経過すると、システム内部と表示されている文字内容に食い違いが発生するようなので、
投稿する前にページをリロードすることをお勧めします。
リロードしてもフォームの内容は維持されます。