- ■吉里吉里/KAG/TJS雑談質問スレ■その23
853 :名前は開発中のものです。[sage]:2011/05/19(木) 18:41:35.77 ID:ozIfu/zH - 解決法を書くよー。
まず、globalで以下のようなクラスと関数を定義しておく。
|
- ■吉里吉里/KAG/TJS雑談質問スレ■その23
854 :名前は開発中のものです。[sage]:2011/05/19(木) 18:44:27.49 ID:ozIfu/zH - class FuncCall
{ var func; var args; function FuncCall(func, args*) { this.func = func; this.args = args; } function call { func(args*); } }; function funccall { var obj = new FuncCall(...); return obj.call; }
|
- ■吉里吉里/KAG/TJS雑談質問スレ■その23
855 :名前は開発中のものです。[sage]:2011/05/19(木) 18:48:35.80 ID:ozIfu/zH - FuncCallというのは、引数つきで関数を呼び出すクラス。
funccallというのは、FuncCallのオブジェクトを作って、その関数呼び出しを返すショートカット。 funccall(btn, i) とやると「引数iで関数btnを呼び出す関数」が生成される。 この状態で obj[i] = new SystemButtonLayer(kag, kag.fore.base, funccall(btn, i)); と書けばうまくいくのでは無いかな。
|
- ■吉里吉里/KAG/TJS雑談質問スレ■その23
856 :名前は開発中のものです。[sage]:2011/05/19(木) 18:57:07.43 ID:ozIfu/zH - こんな風に書くとFuncCallのクラス定義無しで一発で行けるけど、変態コードなのでお勧めはしない。
function funccall(args*) { return function { shift()(this*); } incontextof args; }
|