■吉里吉里/KAG/TJS雑談質問スレ■その22at GAMEDEV
■吉里吉里/KAG/TJS雑談質問スレ■その22 - 暇つぶし2ch98:名前は開発中のものです。
10/10/09 21:52:16 c/TkkFvg
書籍を購入して勉強しているのですが、式中関数について質問させてください

;--------------------------------------------------

//引数p(価格)から消費税を計算し価格と一緒に表示する

//関数を作る
function foo(p)
{
var tax = function(n){return n * 0.05;};
System.inform("価格" + p + "円 \n[消費税" + tax(p) + "]円");

}

//関数を使う
foo(1000);

;--------------------------------------------------

1)
foo(1000) なので、function foo(p) の p には 1000 が入る と考えると
function(n) の n にも 1000 が入ると 考えていいのでしょうか?
n * 0.05 は 1000x0.05 で、50 になり、return で var tax = 50 になる
という考え方で大丈夫ですか?

2)
tax(p) の (p) はどう解釈したらいいのでしょうか?
ちなみに (p) をなくして tax だけだと、(object 0x00C87A50:0x00000000)円
と表示されました。

お手数ですが教えて下さい。


99:名前は開発中のものです。
10/10/09 22:15:05 frqapTDk
>>98

1. ダメです。その時点で tax にはいるのは定義した関数そのものです
2. 名前の後ろの () は関数を呼び出す命令です。tax には関数が代入されてますから、
 その時点でその処理が呼び出されて結果が帰ります


100:名前は開発中のものです。
10/10/09 23:02:54 c/TkkFvg
>>99
レスありがとうございます
書きかたが下手で伝わらなかったら申し訳ないのですが

1.
var tax = function(n){return n * 0.05;};

の時点で 変数tax に入っているのは function(n){return n * 0.05;}
という式中関数そのもの

2.
System.inform("価格" + p + "円 \n[消費税" + tax(p) + "]円");

が実行される時に p に 1000 が代入され(↓こんなイメージ?)
System.inform("価格" + 1000 + "円 \n[消費税" + tax(1000) + "]円");

tax(1000) でfunction(n){return n * 0.05;}が呼び出され
n に 1000が代入される(?)
n * 0.05 は 1000x0.05 で、50 になり、return で tax(p) が 50 になる
System.inform("価格" + 1000 + "円 \n[消費税" + 50 + "]円");

3.
tax(p) は 関数(式中関数)を使うための記述で
function(n){return n * 0.05;} を呼び出して使う
意味としては function tax(n){return n * 0.05;} と同じ

この考え方で大丈夫でしょうか?

101:名前は開発中のものです。
10/10/09 23:27:58 oa714Kq7
大丈夫だ、問題ない

102:名前は開発中のものです。
10/10/09 23:35:31 frqapTDk
その理解で大丈夫です。

なお、TJSでは、式中関数(匿名関数)と普通の関数は、物としては完全に同じものです。
つまり、function a(arg) {} は、 global.a = function(arg) {} と等価です。

通常関数と同じものなので、Javascript のレキシカルクロージャのようなローカル変数の引き込みはできません。
かわりに、実行コンテキストを内部保持していて明示的に差し替え可能という独特の機能があり(incontextof で明示指定可能)
これを指して「クロージャ」と呼んでます。言葉の意味が他の言語と全然違うのでご注意を。

103:名前は開発中のものです。
10/10/10 18:56:03 7pzwuuU/
config.tjsのuserFaceでデフォのフォントを変更した場合って
あとどこ変えればいいんでしたっけ!?
ググるとsaveフォルダ内のファイルいじれってでてくるんだけど
初回起動なんでsaveフォルダ内にはlogファイル以外ファイルがないんです

104:名前は開発中のものです。
10/10/10 19:18:00 HMcZ4r+0
>>101-102
ありがとうございました
これですっきりして次に進めます
PG未経験の独学なので本当に助かりました

クロージャについてはちょっと難しいのですが、
クロージャとコンテキストという項があったので
そこを読み解く時に>>102を念頭に置いて勉強します
今は他言語でいうクロージャとTJSでいうクロージャはまったくの別物、
という認識で、先に進みます

お手数かけました。感謝!

105:名前は開発中のものです。
10/10/10 19:35:14 7pzwuuU/
すんません
>>103はナシで

例外通知出た時のコンソールのカーソル位置って
必ずしも原因の行ではないのでしょうか?

106:名前は開発中のものです。
10/10/11 00:02:38 l04I2Vhv
一定の場所のシナリオをユーザーが読んでいる間、キャラクターを左右にうようよ 等感覚で動かしたいのですがどうしたらいいでしょうか?
コレのパスを永遠とかいてみたのですがいつかは止まってしまうので・・・

[eval exp=sf.layer=0]
;←ここから
[move layer="&sf.layer" time=1000 path="(-10,-300,255)(-50,-280,255)"]
メッセージ1行目[r]
メッセージ2行目[r]
メッセージ3行目[r]
メッセージ4行目[l][r][er]
[r][r][r][r]
メッセージ5行目[r]
メッセージ6行目[r]
メッセージ7行目[r]
メッセージ8行目[r]
[wm]
;←ここまで

107:名前は開発中のものです。
10/10/11 00:08:47 cvlG6B2T
アニメーションしたら

108:名前は開発中のものです。
10/10/11 08:56:21 mautny+/
俺なら普通に動画で作るよ。 ループ再生するだけだし。
悩まずに30分もあれば組み込みまで終わる。

109:名前は開発中のものです。
10/10/11 11:58:34 Kw3Yj571
画像がうまく表示されません。ご鞭撻いただけますでしょうか…。

[eval exp="tf.time_layer =2"]
[image storage="time_img.png" layer=tf.time_layer page=fore visible=true left=600 top=20]
[backlay layer=tf.time_layer]

[eval exp="tf.point_layer =3"]
[image storage="point_img.png" layer=tf.point_layer page=fore visible=true left=600 top=70]
[backlay layer=tf.point_layer]

このように表記をしても、point_img.pngしか表示されません。
何か根本的な理解の欠如をしている気がします…。もう30分悩んでいます。助けてくださいm(_ _)m

110:名前は開発中のものです。
10/10/11 12:00:16 Kw3Yj571
ああああああああageてしまった!
すみません。必死すぎました。。

111:前スレ182
10/10/11 12:08:01 TqmROLvI
>>109 エンティティ使えよ。
URLリンク(www.ultrasync.net)

112:名前は開発中のものです。
10/10/11 12:10:21 Kw3Yj571
一瞬で解決しました。
そういえば昔もこれでハマったことがありました。

どうみても学習していません。本当にありがとうございました。

というか>>111様本当にありがとうございました。

113:名前は開発中のものです。
10/10/11 13:42:10 Zn33pEpI
KAGを現役バリバリのプログラマに分かるように説明してくれるサイトってない?
初心者向けばかりで、どうでもいい先生のオナニーサイトばかりでうざい

114:名前は開発中のものです。
10/10/11 13:49:10 88uk2vC3
現役ばりばりのプログラマならリファレンス眺めたあとソースよむのが最速だろう

115:名前は開発中のものです。
10/10/11 13:50:34 88uk2vC3
>>106
Mover系のコードを改造してループ機能をしこむのが妥当

116:名前は開発中のものです。
10/10/11 13:51:37 wQcSy756
プログラマでない人間でも公式リファ見ればわかるのがKAG
講座サイトはそれでもわからない人間に親切に教えるサイト

117:名前は開発中のものです。
10/10/11 14:40:18 4T1UAJDz
>>114
俺も以前にそう言われて「なんだよ不親切な住人だなクソが!」と腹立ったけど、
実際リファレンスとソース読むのが一番だった
でもまだちょっと根に持ってるw

118:名前は開発中のものです。
10/10/11 14:56:46 ak8vlBC8
KAGParserはもうちょっと頑張ってTJSで書くべきだよなあ
速度的に重要な部分だけネイティブにしてほしかった


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch