178 | kis00283 | ひゅう | 1995/10/31 19:35:45 |
前へ
後へ
上へ
|
fkiss
WKISSに fkiss拡張機能が付いたので,
やっと,最近まじめに(?) fkiss機能してます。
あ,うちでは,fkissは動きません ^^;
WKISSや KISS21でいろいろやってみて,
思ったことです。
いちおう,yavさんへの質問及び要望です。
ですが,今後,GS(標準化)ヘ向けてどうするのがいいかってのは,
他の方からも意見を聞きたいです。
・イベントが同時に発生したときの処理の優先順位は?
例えば,catch(#1) と catch("body.cel") が同時に発生する可能性があります。
また,catch(#1) , fixcatch(#1) , press(#1) 等もですね。
実装イベントの種類が増えれば,もっといろいろ起きそうです。
イベントの処理順を決めておかないと,
移植されたときに意図した動きをしない可能性があります。
後でも述べますが,イベントはできるだけ排他的に起きる方が
いいと思います。
まぁ,今のところ,
可換でないコマンドは,setか, move(画面の端に来たとき)を使ったとき
くらいしかないですが,変数を導入したら問題が大きくなります。
・catch(or fixcatch) と press はどう違うのでしょうか?
どういう意図をもって,わざわざわけたのか?ということです。
あ,それと,各イベントが起きる条件とタイミングは
以下の通りでよろしいでしょうか?
fkissの仕様?(たぶん)
固定値 | 0 | 1〜998 | 999〜 |
press / release | ○ | ○ | ○ |
catch / drop | ○ | ○ | |
fixcatch / fixdrop | | ○ | |
| クリック | ドラッグ | ドロップ |
固定値つき(999以上) | pr | | re |
固定値つき | pr ca fc | dr fd | re |
固定値つき(外れた場合)| pr ca fc | uf | re dr |
固定値なし | pr ca | | re dr |
違ってたら教えてください。
KISSGA/21/CL の作者の Hx2さんもおっしゃってたんですが,
pressと catchとかは,同時に起きないほうがいいんじゃないでしょうか。
イベントはできるだけ排他的にした方が,
細かい制御ができますし,
処理順の問題も起きませんから。
それと,個人的には,pressの存在意義を感じません。
また,fixdrop は,実際にドロップしたときに起きた方が,
いいのでは?この方が,たとえば,ぺしぺししてるとき,
マウスで引っ張ってるって感じが出ると思うので。
私だったらイベントは…
KISS/GS案 HYuu's draft(笑)
固定値 | 0 | 1〜998 | 999〜 |
catch / drop | ○ | | |
fixcatch / fixdrop | | ○ | ○ |
| クリック | ドラッグ | ドロップ |
固定値つき | fc | (*) | fd |
固定値つき(外れた場合)| fc | uf | dr |
固定値なし | ca | (**) | dr |
こんな感じでいいと思います。
イベントを排他的にしてます。
(*),(**)のところは,ドラッグを開始したというイベントを
いちおう入れるべきかどうかってくらいです。
(あまりつかわないと思うけど)
・絶対固定
絶対動かないセルの指定が欲しいです。
fkiss で,固定値 999以上と,998以下でイベント発生が異なるようで,
もしかしたら,動かないことを前提にしたセルに対して
固定値 999以上を指定することを意図されているのでしょうか?
推し進めて,いっそ,999以上を指定すれば,
ぺしぺししても減らないように仕様を変えてしまうのも一計かもしれません。
ですが,98のKISSでは,999だと(うまくやれば)けっこう簡単に外れるので,
ちょっと小さすぎる値かな…って気もしますが。
まぁ,あんまり CNFの桁数とるのもなんですから,
この程度でいいかな…。どうだろ…
・catch("body.cel")
セルファイル名を指定するとき,""で括ってますが,
必用ないんじゃないでしょうか?
・セルとセルが重なっているかどうかで処理を分けたいです。
体にドロップしたときと,他の場所にドロップしたときで
服の状態を変えたりしたいってことです。
fkissには,実装はされてませんが,
コメントをみると予定されているようですね。
どのようなものを考えておられるんでしょうか?
ちょっとコメントからだとよくわかんなかったので。
また,重なってる判定は,
セルを矩形と考えれば,けっこう簡単そうですね。
でも,非透明部と考えるとナカナカ難しそうです。
どっちがいいでしょ?
fkissでは,重なりを,イベントとしてとらるつもりのようです。
もし,後で述べる変数や条件分岐の導入を考えているのなら,
関数を用意して,セルの重なりを判別する方法も考えられます。
というか,もっと一般的に,
セルの各辺の座標や,中心位置を得る関数を用意しておけば,
細かな制御ができます。
でも,それだと処理が遅いという判断かなぁ…。
・変数,条件分岐
まず, goto は絶対必要だと思います!
ここからは絶対とはいいませんが,変数が使えると便利です。
MASLみたいなのでいいです。
でも,実装が面倒そうだし,CNFが複雑になるという欠点があります。
個人的には変数は,ぜひぜひ欲しいです!
できることが格段に広がりますから。
条件分岐は贅沢はいいません。 if 〜 else さえあればいいです(^^;
変数・条件分岐を導入するかどうかで,
KISSの方向性が大きく変わると思います。
(良くも悪くも)
他にもいろいろあるんですが,
うまくまとまんないのと,時間切れなので,この辺にしときます。
〜 ひゅう 〜