■吉里吉里/KAG/TJS雑談質問スレ■その23
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2011/02/03(木) 13:12:07ID:6MBIOEHD自作ゲームの進行状況や製作ツールについての話、TJS等の話題もどうぞ。
マルチポストはやめましょう。個人叩きも禁止です。
※スレで質問をするときは※
KAG/TJS/吉里吉里ドキュメント、スレの過去ログ、公式掲示板のログ、
FAQ、Google等で調べてからにしましょう。
努力の形跡が見られないとスルーされがちです。初心者?でも頑張れ!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
吉里吉里2/KAG3雑談質問スレ_過去ログ
ttp://www.geocities.jp/kirikiri_log/
吉里吉里ダウンロードページ
ttp://kikyou.info/tvp/
ダウンロードしたアーカイブに含まれる「KAG System リファレンス」は
初心者にとって最も頼もしい教科書です。何度も繰り返し読みましょう。
■タグリファレンス … KAGの機能が網羅的、辞書的に載っています。
大よその機能(KAGでどんなことが出来るか)は把握しておきましょう。
■Tips/その他 … 陥り易いミスやより高度な使い方への足掛かりになる
数々のTipsが記載されています。
■TJSをもっと使うために
ゲームのインターフェイスをカスタマイズしたい、また
KAGの命令に無いことをしたくなったらまずここを読んでみよう。
必要に応じて>>3-5の公式掲示板や講座等を併用してください。
(併用に、紙媒体の参考本が欲しい人は、ダウンロードページにリストがあります)
前スレ
■吉里吉里/KAG/TJS雑談質問スレ■その22
http://hibari.2ch.net/test/read.cgi/gamedev/1285897465/
0872名前は開発中のものです。
2011/05/20(金) 19:12:28.26ID:eAwQCbJqまず、一番大本の obj[i] = new SystemButtonLayer(kag, kag.fore.base, btn(i)); では駄目なのか?
この場合、期待しているのは「ボタンが押された時にbtn関数が呼ばれる」事なのに、
この表記だと「ボタンを作成した時にbtn関数が呼ばれる」事になってしまいます。
つまり、最初の表記ではSystemButtonLayerに「btn関数を渡す」つもりで
「btn関数の呼び出し結果を渡してしまっている」ことがエラーの原因です。
(続く)
0873名前は開発中のものです。
2011/05/20(金) 19:15:40.36ID:eAwQCbJqその関数が呼び出した実行結果がとなります。関数そのものを
あらわすには「btn」と、括弧無しで表記する必要があります。
つまり、元々の意図通り「SystemButtonLayerに、ボタンが
呼び出された時に処理されるようにbtn関数を渡す」場合は、
以下のように表記するのが正しいことになります。
obj[i] = new SystemButtonLayer(kag, kag.fore.base, btn);
…でも、これはこれで何かおかしいですね?
そう、btn関数は引数をひとつ必要とする関数なのに、
これではボタンが押された時に引数無しでbtn関数が呼び出されてしまい、
やはりエラーになってしまうでしょう。
ではどうすればいいのか?
(続く)
0874名前は開発中のものです。
2011/05/20(金) 19:26:16.66ID:eAwQCbJq変数に代入が可能な要素になっています(その仕組みのおかげで、
SystemButtonLayerに関数を指定して、後から実行してもらう
事が出来ます)。
ですが、ファーストクラスオブジェクトとしての関数は、
「関数そのもの」と「関数が実行されるコンテキスト」の
2つの要素だけで構成されています。関数を実行する際に
与える引数は、含まれていません。
つまり、吉里吉里の素の表記では、引数まで含めて関数を
遅延評価するために変数に代入してやることは出来ません。
(続く)
0875名前は開発中のものです。
2011/05/20(金) 19:29:42.81ID:eAwQCbJq詳細に書くと「目的の関数と引数を含めた新たなコンテキスト」を
作って、そのコンテキストで「目的の関数を目的の引数で呼び出す関数」
を作り、最終的にその関数を返値として返すという処理をしてるんですが、
自分で書いてて何言ってるんだという感じですね。
すいません、ややこしいのでなかなかうまく説明できる気がしません。
■ このスレッドは過去ログ倉庫に格納されています