[AS]委譲する際に引数を持たせる方法
参考サイト
http://katapad.com/wp/2008/05/25/study_as2_delegate_create/
Delegate.asを以下のように書き換える。
static function createWithArgs(obj:Object, func:Function, args:Array):Function//args:Arrayを追加 { var f = function() { var target = arguments.callee.target; var func = arguments.callee.func; return func.apply(target, arguments.callee.args.concat()); //ここを追加 }; f.target = obj; f.func = func; f.args = args; //ここを追加 return f; }
配列で引数を渡せるみたい。
ただし、配列として色んな値を格納して、それを取り出すなんてことはできないみたい。
例えば、ステージに_mcというインスタンスをおいた状態で、
import mx.utils.Delegate; var tstArray:Array = new Array(); tstArray.push(100); tstArray.push(200); _mc.onRollOver = Delegate.create(this, onRollOverTest,tstArray); function onRollOverTest(x){ trace("delegate+"+x);//出力:100 }
これでは値はunderfinedになってしまった。
import mx.utils.Delegate; var tstArray:Array = new Array(); tstArray.push(100); tstArray.push(200); _mc.onRollOver = Delegate.create(this, onRollOverTest,tstArray[0]); function onRollOverTest(x){ trace("delegate+"+x);//出力:100 }
Tweet