[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