■吉里吉里/KAG/TJS雑談質問スレ■その20
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2010/01/31(日) 19:31:16ID:znLbECSK自作ゲームの進行状況や製作ツールについての話、TJS等の話題もどうぞ。
マルチポストはやめましょう。個人叩きも禁止です。
※スレで質問をするときは※
KAG/TJS/吉里吉里ドキュメント、スレの過去ログ、公式掲示板のログ、
FAQ、Google等で調べてからにしましょう。
努力の形跡が見られないとスルーされがちです。初心者?でも頑張れ!
前スレ:■吉里吉里/KAG/TJS雑談質問スレ■その18
http://pc11.2ch.net/test/read.cgi/gamedev/1244218314/
吉里吉里2/KAG3雑談質問スレ_過去ログ
ttp://www.geocities.jp/kirikiri_log/
吉里吉里ダウンロードページ
ttp://kikyou.info/tvp/
ダウンロードしたアーカイブに含まれる「KAG System リファレンス」は
初心者にとって最も頼もしい教科書です。何度も繰り返し読みましょう。
■タグリファレンス … KAGの機能が網羅的、辞書的に載っています。
大よその機能(KAGでどんなことが出来るか)は把握しておきましょう。
■Tips/その他 … 陥り易いミスやより高度な使い方への足掛かりになる
数々のTipsが記載されています。
必要に応じて>>3-5の公式掲示板や講座等を併用してください。
(併用に、紙媒体の参考本が欲しい人は、ダウンロードページにリストがあります)
0663名前は開発中のものです。
2010/04/12(月) 14:54:42ID:7G/20Txoそれって、Timerクラスを使っても画面更新タイミングにならないと
意味がないってことになるの?
0664名前は開発中のものです。
2010/04/12(月) 16:21:08ID:bu8ubFx6Layer.update した領域にリペイントかかるよ。Window に対する指定はないけど primaryLayer.update() すればいいかと
>>663
そうだね。実際に画面に反映されるのは画面更新時になるからそれを見越して描画する必要がある
なお、全描画フレームに対して処理したい場合は、Timerではなくて、System.addContinuousHandler を使う。
これはかならず描画処理と1対1でよばれる。
ただし、標準の設定では、continuousHandler はCPUパワーのゆるす限り無制限に呼ばれてしまうので、
それを制限したい場合は、System.setArgument で -contfreq を指定する必要がある
あと、どうしても描画処理の最中でなにかしたい場合は、該当レイヤが画面に合成描画される
直前に同期で Layer.onPaint イベントがくるから、そこでレイヤの内容を書き換えることができる。
この場合は、Timer や continuous ハンドラの中では処理用のフラグを立てるだけとか
そういう書き方をすることになる
0665名前は開発中のものです。
2010/04/13(火) 00:07:13ID:5tu1z67jKAGの低性能なスクリプトエンジンに耐えきれず、
じゃあ拡張しようかとなったときに他のエンジンとは明らかに格の違う
性能とコンセプトを目の当たりにして、人々は絶望する。
0666名前は開発中のものです。
2010/04/13(火) 00:11:08ID:5oPrQ85b0667名前は開発中のものです。
2010/04/13(火) 00:17:04ID:5tu1z67j日曜プログラミングでMS-DOS(PC98)からWindowsへの移行に失敗した俺は、
吉里吉里の概念を理解するのにかなり時間を要した。
手軽にアドベンチャーゲームを作れると考えて吉里吉里を始めた人間の多くは、
プログラミングの素養なしに突撃してくるから、TJSをいじる段になって困惑する
人が多いと思うよ。
商業製品でもそういう気配を持ったものが散見されるしね。
0668名前は開発中のものです。
2010/04/13(火) 00:20:32ID:hC34RsXPなんのためのスクリプトなのって感じ
0669名前は開発中のものです。
2010/04/13(火) 00:21:26ID:wwPqAQd5KAG程度では出来ないこと一般的なADVゲー程度ではない野心モノを作ろうとする人間になろうというのが間違ってる気がする
0670名前は開発中のものです。
2010/04/13(火) 01:09:24ID:5tu1z67jKAGってのは簡単に見目麗しいGUIを構築できるものなの?
すごいことを要求してるわけじゃなく、ボタンの上にマウスカーソルを乗せたときに、
ボタンがアニメーションで明滅したりとか、その程度のこと。
まさかできないわけがないとは思うんだけど、吉里吉里を使った作品では
それさえできてないものが多いから、KAGではそういうことはできず、
かといってTJSで拡張することもできずしかたなく貧弱なGUIに甘んじてる
のかなと、ちょっと気の毒に思ったりしてるんだけど。
単に見た目にこだわらない使用者が多いだけなんだろうか。
0671名前は開発中のものです。
2010/04/13(火) 02:19:40ID:byydkv5+昨今の商用のや凝った同人のあれこれみてると真似したくなるのが人情だから、絶望してる人は可哀想だなとはおもう。
ある程度いじった事のある人ならプラグインや本体の機能拡張はいっくらでも進められるんだろうけど、
中で何やってるか理解して無いとエラー出たとき自力対処できないから
無責任にホイホイはいどうぞって、作ったものを周囲にばら撒くのは後の苦労が予想できて怖い。
ところで、そんなにシステム頑張ってもゲームの評価にはあんまりつながらないよw
0672名前は開発中のものです。
2010/04/13(火) 02:59:02ID:gB2EIlAtコルーチン+クロージャ+継続最強!
あれ?Rhino完ぺきじゃね?
0673名前は開発中のものです。
2010/04/13(火) 04:39:34ID:wwPqAQd5「言われた通り(要求した通り)に動作をし、妙なバグを出さない安定したプログラム」だからな
実際にプレイする側からしてみれば、吉里吉里使ってようがNスクだろうが独自エンジンだろうが
パッとみてそれなりに動作してさえくれればプログラム自体の動作原理なんてどうでもいい訳だし
0674名前は開発中のものです。
2010/04/13(火) 04:45:06ID:HBL2yx/p今あるツールでそれが吉里吉里より簡単にできそうなのはFlashくらいか?
その場合結局テキスト処理とかでActionScriptを勉強する必要があるから
ノベルっぽいの作る場合TJSよりよっぽど難しくなるしな
0675名前は開発中のものです。
2010/04/13(火) 11:13:02ID:5tu1z67j確かに、システムは頑張ってもプラス評価はされにくい。
でも、頑張らなかったらマイナス評価されるでしょ。
絵描きやライターはプラス評価をもらうために頑張り、プログラマやスクリプターは
マイナス評価をもらわないために頑張るべき。
0676名前は開発中のものです。
2010/04/13(火) 11:51:18ID:HJumxRaSどうせ後からこれが欲しいあれが欲しい言うから始めからある程度の機能と拡張性持たせとけよ。
System4はやりすぎだけどな。
0677名前は開発中のものです。
2010/04/13(火) 15:39:25ID:UB2bkzV5なら吉里+FLASHで完璧だおw
0678名前は開発中のものです。
2010/04/13(火) 16:48:53ID:bTgZrl650679名前は開発中のものです。
2010/04/13(火) 16:55:59ID:mZatHBWh0680名前は開発中のものです。
2010/04/13(火) 17:36:29ID:555dHs4X>>664とか
0681名前は開発中のものです。
2010/04/13(火) 18:21:56ID:bTgZrl65{
var f;
function MyTimer( func )
{
super.Timer();
f = func;
}
function onTimer()
{
f();
}
}
var a = new MyWindow();
var time = new MyTimer( a.move );
time.interval = 1;
time.enabled = true;
でタイマー設定したけど うんともすんともいわないけど?
0682名前は開発中のものです。
2010/04/13(火) 18:33:14ID:lsDYf/YDうんともすんともいわないのなら、お前のコードが間違っている
0683名前は開発中のものです。
2010/04/13(火) 18:38:37ID:1QvSKzvQnew Timer(); ← この時点でonTimerが呼ばれることを否定してないか
0684名前は開発中のものです。
2010/04/14(水) 00:43:30ID:gaoSRoJAどうでもいいけど"f"を変数名に使うのは一応やめといた方がいいよ
0685名前は開発中のものです。
2010/04/14(水) 05:29:24ID:ZTnfYCLxわかった。 sf にする。
0686名前は開発中のものです。
2010/04/14(水) 20:58:15ID:gC/sYrK80687名前は開発中のものです。
2010/04/15(木) 01:51:51ID:ORlt69RN0688名前は開発中のものです。
2010/04/15(木) 14:48:48ID:YfKjGZPmうん、どうでもいい
0689名前は開発中のものです。
2010/04/15(木) 15:40:06ID:3/DzGgwRまさかこの壁にぶち当たる日がくるとは・・・。
0690名前は開発中のものです。
2010/04/15(木) 15:59:48ID:4OoukbRH泣く子とメモリエディタには勝てん
いちおう http://dsas.blog.klab.org/archives/50829204.html とか参考になるかも
0691名前は開発中のものです。
2010/04/15(木) 16:22:12ID:YfKjGZPmバカじゃねーの?
0692名前は開発中のものです。
2010/04/15(木) 16:51:45ID:EU/LsSOKダミーの変数を山ほど作る
対策2
1. パラメータの処理
2. 処理結果を元にチェックサムを残す
3. ゲーム進行
4. 現在のパラメータとチェックサムを比較。異常があれば停止
5.1に戻る
対策3
数値をアルファベットに変換して文字列として格納
計算を行う直前で数値に戻す
ただの思い付きにつき未検証。
この程度でいいとおもうよ?
それでも対抗されるならそんだけ魅力があるんでしょ。ある意味勝ち。
逆にチートしないと遊べないくらいバランスが悪かったりして……。
吉里吉里コアの起動オプションをいじられるとかだったらシラネ。
自前でコアを改造・コンパイルするしかないんでは。
0693名前は開発中のものです。
2010/04/15(木) 17:03:35ID:+LF24uaa[link exp="kag.closeByScript(%[ask:true])" clickse="bell16"] Exit [endlink]
をクリックして終了確認ダイアログの「いいえ」を選択すると
そのページに留まらず、何故か自動的に次のシナリオに進んでしまいます。
単純なミスだとは思いますが、似たような症例が見つからなかったので、
恐れ入りますがご教授願います。
0694名前は開発中のものです。
2010/04/15(木) 18:12:23ID:EU/LsSOKリンクタグでなく、ボタンでやってみたらどうなる?
0695名前は開発中のものです。
2010/04/15(木) 18:28:42ID:UJrfVVKn内部で実際そんな考え方で動いてるかどうかは知らんが、実際ワンクリックされたものと同じ挙動を示した気がした。
だからリンクタグ等でこのメソッドを呼ぶ時は[s]タグを直後に用意するか、もしくは
[link exp="kag.closeByScript(%[ask:true, ignore:true])"]Exit[endlink]
みたいな感じで独自に引数を追加し、MainWindow.tjsのcloseByScriptを直接
function closeByScript(elm){
/* 中略 */
// closeByScript は、このハンドラが終わった直後に
// 「終了しますか?」のダイアログを表示する。
// 終了する場合はそのまま終了する。
// 終了しない場合は 'not_closed' トリガが発行され、
// 実行は継続する。
// ! ConfigLayer等からcloseByScriptと呼んだ場合、「いいえ」が押されるとメッセージが勝手に進んでしまうので
// elm.ignoreオプションが有る場合は以下を発動しない
if(elm.ignore) return;
conductor.wait(%[
not_closed : askOnClose_save
? (function{
// 実際にこれが呼ばれることはないが、一応
askOnClose = true;
} incontextof this)
: (function{
} incontextof this)
]);
}
}
みたいな具合に改造してやんのがいいんじゃないか。まあ改造するのはめんどくさいから
素直にリンクの直後に[s]置いとけっていう話だけど
0696名前は開発中のものです。
2010/04/15(木) 22:00:53ID:6X7UzU50どうすれば直るんだ
0697名前は開発中のものです。
2010/04/15(木) 23:16:30ID:zSTY2jOg(バグとかでなく、作られてない)だけじゃないか?
個人制作のフォントにはありがち。
作者に問い合わせるか自分で改造してみるか。
0698696
2010/04/15(木) 23:23:57ID:6X7UzU50吉里吉里だけ駄目でしたとかフォントの作者に問い合わせても仕方ない気がする
0699名前は開発中のものです。
2010/04/16(金) 02:55:07ID:P4xCWJ8Xアンチエイリアスを切るか、文字sizeが18以下だと文字化け直るぞ。
なんだこりゃ
0700名前は開発中のものです。
2010/04/16(金) 16:06:15ID:6EQ1YKj8無料で、しかも作者の趣味なんで^^;
0701名前は開発中のものです。
2010/04/16(金) 16:36:08ID:omIaxmXm公式掲示板で過去ログ検索して無かったら報告してみたらどうですか。
0702名前は開発中のものです。
2010/04/16(金) 20:33:41ID:eNEQwPUZアンチエイリアスは確認した
俺の環境だと
size1~9 or 11で芯
size23以下 or 25~27で飛
がちゃんと表示されるなんぞこれwww
公式で報告してくるか…
0703名前は開発中のものです。
2010/04/17(土) 11:04:05ID:1EX4Uz99飽きちゃったかな
0704名前は開発中のものです。
2010/04/18(日) 00:16:29ID:1CW3lEYF指定の領域番号の部分だけに色を塗ることって
出来ないんでしょうか?
0705名前は開発中のものです。
2010/04/18(日) 14:50:05ID:EU14TQdH「↓」キーを入力すると、tf.down =1 となるように組むにはどうすればよいでしょう?
おそらく、根本的なところを理解していないと思うのですが…。。。
[eval exp="tf.down =0"]
[iscript]
function onKeyDown(key, shift)
{
if(key == VK_DOWN)
tf.down=1;
return true;
}
// キーダウンフックを登録
kag.keyDownHook.add(onKeyDown);
[endscript]
これじゃだめ、、、ですよね・・?
0706名前は開発中のものです。
2010/04/18(日) 15:35:36ID:1CW3lEYFMainWindow.tjsを見てみたところ
フォーカスをもってるレイヤが存在する場合には
keyDownHookは呼び出されないようです。
フォーカスを外してやるかフォーカスをもったレイヤの
keyDownイベントを使うといいかと。
どなたか>>704御存知の方いませんでしょうか?
0707名前は開発中のものです。
2010/04/18(日) 15:52:55ID:M7H9kFRv見渡した感じ、無理っぽいかも?
画像を用意して上にのっけてやるしか……
0708名前は開発中のものです。
2010/04/18(日) 16:12:02ID:1CW3lEYFやっぱりそうですかあ・・・
お手間を取って頂いてありがとうございました。
かくなる上は1pixelずつ塗ろうと思います・・・orz
0709名前は開発中のものです。
2010/04/18(日) 16:33:18ID:EU14TQdHなんとか解決したっぽいです!
ありがとうございました。
if(key == VK_DOWN)
tf.down=1;
こーゆー記述が不安だったのですが、普通に問題なかったのですね。
0710名前は開発中のものです。
2010/04/18(日) 17:37:24ID:Jq6vU6/Wたとえば Layer で画像表示してる状態で、画像をドラッグするような処理
他にWindowの枠をとるとかできる?
0711名前は開発中のものです。
2010/04/18(日) 23:07:10ID:j2F34tRA0712名前は開発中のものです。
2010/04/19(月) 09:15:46ID:CpSYJ2cy無効にすることはできるんでしょうか?
同梱exeでコンフィグ設定できるものはいいのですが
そうでない場合どうしようもないのですか?
0713名前は開発中のものです。
2010/04/19(月) 11:53:21ID:9w3s40P0>かくなる上は1pixelずつ塗ろうと思います・・・orz
が>>707の発言を受けたレスで、ペイントツールなどで1ピクセルずつ手作業で
塗るという意味なら、その作業を軽減することはできるんじゃないかな。
getProvincePixel で画面上のすべてのピクセルをスキャンして、指定の領域番号
が来たらその位置のピクセルを fillRect なんかで塗りつぶす。
そして完成した画像を saveLayerImage かスクリーンショットで画像ファイルに
落とし込んで、ペイントツールで適切なデータ形式に加工すれば、半自動で
画像を用意することはできる。
そもそも、効率を度外視すれば、
>getProvincePixel で画面上のすべてのピクセルをスキャンして、指定の領域番号
が来たらその位置のピクセルを fillRect なんかで塗りつぶす。
こそが「指定の領域番号の部分だけに色を塗ること」なんだけども。
0714名前は開発中のものです。
2010/04/19(月) 12:51:28ID:29Oz2KV9外せばいいんじゃないの?
0715名前は開発中のものです。
2010/04/19(月) 13:03:41ID:rGREnao1まめ知識
「エンジン設定.exe」は、実行ファイルにオプション -userconf をつけて起動するだけのツール
あとはわかるな?
0716名前は開発中のものです。
2010/04/19(月) 13:39:29ID:CpSYJ2cyなるほどーありがとうございます
パッドがデフォルトで有効になっているのは吉里吉里のせいなんですよね?
設計上おかしいと思うんだけどな
>>714
ばーか
0717名前は開発中のものです。
2010/04/19(月) 14:05:36ID:rGREnao1その心意気や良し
ってことで足しておいた
使い方 (fillByProvinceのとこ参照)
ttps://sv.kikyou.info/svn/kirikiri2/trunk/kirikiri2/src/plugins/win32/layerExBTOA/manual.tjs
プラグインバイナリ
ttps://sv.kikyou.info/svn/kirikiri2/trunk/kirikiri2/bin/win32/plugin/layerExBTOA.dll
0718名前は開発中のものです。
2010/04/19(月) 14:14:59ID:xFhXThvS公には公開してないみたいだけど
自分で書いた動画再生用の関数とかを付けて勝手に公開したらやっぱりまずい?
0719名前は開発中のものです。
2010/04/19(月) 14:16:09ID:rGREnao10720名前は開発中のものです。
2010/04/19(月) 14:22:57ID:xFhXThvS公開って言ってもいつの話になるか分からないけど
0721名前は開発中のものです。
2010/04/19(月) 16:42:05ID:lyIOikyLそうですね 非短形ウィンドウにしたいです
0722名前は開発中のものです。
2010/04/19(月) 17:22:35ID:KnhQAuVVリファレンスを死ぬほど読め
0723名前は開発中のものです。
2010/04/20(火) 07:43:48ID:tD8+Dsc1おおお!欲しかった機能が現実に!
ありがとうございます!
有り難く使わせて頂きます!
それにしてもncbind使うとこんなに短いソースで
出来ちゃうもんなんですね。すごいなあ。
0724名前は開発中のものです。
2010/04/20(火) 13:59:50ID:doyHBlFj皆が設計上おかしいと思ってるならデフォで外す。
要するにおまえがズレているっていうこと。
使わないなら外せばいいだけの話でもある。
0725名前は開発中のものです。
2010/04/20(火) 14:03:08ID:2+rrCL5d0726名前は開発中のものです。
2010/04/20(火) 15:23:30ID:afcMt/UF吉里吉里のレイヤデータは ARGB32 で素直なので、ある程度以上複雑な
ものはさくっと C で書いて機能メソッド化してしまうほうが良いことが多いです
layerExBTOA は一番単純なレイヤへの機能組み込み例なので、自分用の処理書く場合は
適宜それをベースにコピペして構造つくって足していくのが簡単でオススメです。
layerExImage とかはプロパティのキャッシュ処理とかしてるのでやや複雑です
0727名前は開発中のものです。
2010/04/20(火) 17:48:14ID:aPiKsUYa近所の本屋で置いてないので通販したいのですが、実物を見比べることができなくて…
0728名前は開発中のものです。
2010/04/20(火) 19:42:23ID:q/eQ0lf6著者の信用度的にも。
Googleブック検索でかなりのページが読める
http://books.google.co.jp/books?id=I7R29UxkRD8C
0729名前は開発中のものです。
2010/04/20(火) 20:14:51ID:QHuoDVzZありがとうございます
さっそく注文しよう
0730名前は開発中のものです。
2010/04/20(火) 21:51:48ID:aTYUme+P吉里吉里よりLiveMaker薦めた方がよくないか
0731名前は開発中のものです。
2010/04/20(火) 22:24:06ID:Yfqg0clcTJSに挑戦のサイトの人とかで出ないかな
0732名前は開発中のものです。
2010/04/20(火) 22:42:57ID:IH4/h5eALuaにすりゃよかったのに。
0733名前は開発中のものです。
2010/04/20(火) 22:45:04ID:2+rrCL5d0734名前は開発中のものです。
2010/04/20(火) 22:48:17ID:17mRSr4+本当にこれ一冊でTJSと吉里吉里は完全網羅!
C言語?JAVA?そんなの関係ねえ!
その程度知らないと使いこなせないと2ちゃんねるで言われた?
この本を見ろ! それで解決だ!
というぐらい気合いの入ったものであれば、上下巻併せて6000円程度の値段で
そこそこ売れると思うよ。
0735名前は開発中のものです。
2010/04/21(水) 03:26:55ID:dxkyNRdl0736名前は開発中のものです。
2010/04/21(水) 03:36:36ID:skcfLRmW近頃はWeb検索すれば何でも情報が日本語で手に入るからお世話にならなくなったけど。
0737名前は開発中のものです。
2010/04/21(水) 08:18:24ID:b+cmMTvR0738名前は開発中のものです。
2010/04/21(水) 09:10:13ID:dZiag3oA0739名前は開発中のものです。
2010/04/21(水) 09:29:33ID:skcfLRmWどうしてこうなったオライリー
0740名前は開発中のものです。
2010/04/21(水) 16:10:11ID:rpFTtTW30741740
2010/04/21(水) 16:12:32ID:rpFTtTW3吉里吉里で落ち物ゲー作るのって可能?
0742名前は開発中のものです。
2010/04/21(水) 16:35:15ID:wX27Oyhe0743名前は開発中のものです。
2010/04/21(水) 18:52:06ID:Wu3hAsfu0744名前は開発中のものです。
2010/04/21(水) 19:10:28ID:/lBgHuBf日本円でおk
0745名前は開発中のものです。
2010/04/21(水) 19:16:29ID:icgzumbf0746名前は開発中のものです。
2010/04/21(水) 21:26:04ID:rpFTtTW3とりあえずテトリス部分作ってみるか……
0747名前は開発中のものです。
2010/04/21(水) 21:46:56ID:cepG+eFsJavascriptでテトリス作ってる奴だっているんだし、使うオブジェクトやクラスが違うだけで基本的な箇所は一緒だしな。
正直、一番面倒なのは処理の実装よりもUIの用意だと思う
0748名前は開発中のものです。
2010/04/21(水) 21:49:36ID:icgzumbf0749名前は開発中のものです。
2010/04/21(水) 22:00:01ID:q7lOQUk4ブレンド用の非表示画像も全部親子関係を強制されるせいで、
管理とかシリアライザ書くのとか面倒でしょうがない。
0750名前は開発中のものです。
2010/04/21(水) 22:20:33ID:s2Zilcax0751名前は開発中のものです。
2010/04/21(水) 23:15:04ID:KHivq5F5いや、まあ言いたいことは分かるし気持ちも分かるが、現状でも別に管理は
面倒じゃない……よね?
0752名前は開発中のものです。
2010/04/21(水) 23:18:28ID:nYTwffZFループで毎回レイヤをかえているはずなのに、次の画像が出てくると前の画像が消えてしまいます。。
何がいけないのでしょうか? 必要なところを抜粋してみました。
; なんとなくレイヤいっぱい用意
[laycount layers=51]
[iscript]
// ループ開始後、n*50[ms]後に画像を流し始めたいと思ったら tf.arrow[n]=1
tf.arrow = [] ;
tf.arrow[0] = 1;
tf.arrow[20] = 1;
tf.arrow[40] = 1; // 以下60, 80, ... と どんどん増やしていく予定
tf.loop_i = 0;
tf.layer_no = 1;
[endscript]
; 長くなったので2回に分けます。すみません
0753名前は開発中のものです。
2010/04/21(水) 23:19:44ID:nYTwffZF; 50[ms]ごとに繰り返すサブルーチン
; 画像を流したくないときはloop2へ飛ばす
[if exp="tf.arrow[tf.loop_i]<1"]
[jump target="*loop2"]
[endif]
; 画像表示の処理。表示させて移動させる
[if exp="tf.arrow[tf.loop_i]==1"]
[image storage="set" layer="tf.layer_no" page="fore" left="150" top="275" visible="true"]
[move layer="tf.layer_no" path=(350,275,255) time="800"]
; 次の画像のためにレイヤナンバーをインクリメント(してるつもり…)
[eval exp="tf.layer_no++"]
[endif]
*loop2
[wait time=50]
[jump target="*loop1" cond="tf.loop_i <200"]
これでできた!と自分では思ったのですが… うまくいかないのはなぜなんでしょう(´・ω・`)
0754名前は開発中のものです。
2010/04/21(水) 23:20:58ID:tF+0jnn8layer="&tf.layer_no" じゃないとだめ
0755名前は開発中のものです。
2010/04/21(水) 23:21:55ID:tF+0jnn8ということかと
0756名前は開発中のものです。
2010/04/21(水) 23:25:14ID:b2O5sZxlどのみちjumpタグが呼ばれた時点で無限ループ発生しないか?
0757名前は開発中のものです。
2010/04/21(水) 23:30:37ID:nYTwffZFあうあうあー 前も&があったりなかったりでハマってました。。学習しないなぁ…
ありがとうです!
>>756
すみません。質問に関係ない部分をそぎ落としたときに一緒に落ちてたみたいです(´・ω・`)
手元のソースにはあります。ご指摘ありがとうございます。
0758749
2010/04/21(水) 23:35:53ID:q7lOQUk4このlayer変数を単にスクリプトで扱うだけなら、面倒も何もない。
さて、layerオブジェクトを保存/復元してみようとする。(描画内容とかは考えない)
位置やサイズ等の情報は問題ない。DictionaryでもXMLでも書き出してやるだけだ。
では親子関係はどうする?
1.完全な(デ)シリアライズのためには親や子のレイヤの情報も再帰的に書き出す必要がある。
しかしそれには問題がある。
・プライマリでない限り、レイヤは普通KAGの管理するレイヤの子になる。
・また、どこかで別のプラグインの生成したレイヤが兄弟になる場合もある。
→これら、別に独自管理されているレイヤの情報を、シリアライザが加工するのは望ましくない。
2.では、親子のレイヤにはシリアライザは干渉しないものとする。
しかし、これでは復元の際に問題が出る。
Layerは常に「Windowオブジェクトに属し」「Layerオブジェクトの子(またはプライマリ)」でなければならない。
最初の例でいえば、kag、kag.fore.layers[0] といったオブジェクト。
これらのインスタンスを、復元時にシリアライザはどこから持ってくるのか。
そもそも、復元時にこれらのインスタンスそのものが存在するという保証すらない。
なんてことを考えると頭が痛すぎる。
なっ面倒だろう。
0759名前は開発中のものです。
2010/04/21(水) 23:37:15ID:b2O5sZxl俺ならこんなふうに書いてみるかな。
[iscript]
tf.arrow = [];
tf.arrow[0] = 20;
tf.arrow[1] = 40;
tf.arrow[2] = 60;
// tf.arrow[20]とか[40]だと配列が20個,40個....といったように無駄に確保されてメモリを食われるので
// 「配列の個数は少なくして、その代わりに値でnを表現した方がお得なんじゃね?」という理屈です
// ちなみにここで定義したtf.arrowの数(つまり今回は3個)がそのまま「画像を表示するレイヤの数」になるので
// 51個の画像を表示したけりゃtf.arrow[50]まで書いてくれ
tf.currentLayer = 0; // tf.layer_noと思ってくれ
[endscript]
[laycount layers="&tf.arrow.count"] ; 上記の例でいくと、ここで3個のレイヤが確保されるハズ
; ループ開始
*loop_start
[jump target="*loop_end" cond="tf.arrow[tf.currentLayer] === void"] ; tf.arrow分のレイヤを使い切ったら終了
[image storage="レイヤに表示する画像" layer="&tf.currentLayer" page="fore" left="X座標" top="Y座標" visible]
[move layer="&tf.currentLayer" path="move先の座標" time="moveに費やす時間"]
[wait time="&(tf.arrow[tf.currentLayer] * 50)"] ; ここでtf.arrow[0]等で指定した秒数(20*50 = 1000ms)分のウェイトをかける
[eval exp="tf.currentLayer++"]
[jump target="*loop_start"]
*loop_end
; ループが終わった後の処理をここに書くこと
-------------------------
まあ直感で書いただけでデバッグしてないからこのまま動く保証は無いけどな!
0760名前は開発中のものです。
2010/04/21(水) 23:40:51ID:Mp5xpdH9kag.primaryLayer 直下に適当にプールつくってならべとけ。
全然頭痛くするような話ではないと思う。
まあ、Image クラスほしければ適当にネイティブで書いて追加すれば
いいじゃないか。例えば LayerExDraw プラグインには実際存在してるし。
0761名前は開発中のものです。
2010/04/21(水) 23:51:45ID:s2Zilcax0762名前は開発中のものです。
2010/04/21(水) 23:53:08ID:b2O5sZxlそもそも親子関係の状況を持っているオブジェクトが、逐次ユーザーからのリクエスト(例えばセーブやロードか?)を受けて
保存/復元される、そういった影響を受けるって事があんま考えられないんだよね。そういった複雑な機構はそれこそkagオブジェクトの直下、あるいは
globalで直接生成しておいてシステムレベルで管理する(セーブ・ロードでは影響を受けず、吉里吉里を終了した時にのみ変化する)ってのが妥当なんじゃないかと思うんだけど。
具体的にどういう状況を想定してるの?
■ このスレッドは過去ログ倉庫に格納されています