この文書は作成途中です.
標準のKISSから拡張されたFrench-KISS!(以下fkissと略記)のイベント拡張機能について解説します. ホームページに戻る
MIO.Hによって開発された
KISekae Set system(以下KISSと略記)は,
パソコンで着せ替えをして遊ぶというソフトウェアです.
現在では,多くの人によってKISS用のデータが作成されています.
そのポログラムも,MS-Windows, Macintosh, X Window System等の
各種プラットフォーム上で動作するように移植されています.
KISSは,画面に表示されているお洋服等をマウスを使って移動させるというのが
基本的な機能であり,またそれがすべてです.
紙でできた着せ替え人形で遊ぶことを,コンピュータ上でやるという点では
これだけ出来ればいいわけですが,
せっかくコンピュータを使うわけですから
もっともっと面白いことができそうです.
そこで,UNIXワークステーションのX Window Systemで動作するKISSであるfkissでは
そういった面白そうなことができるように
イベント拡張機能というものが追加されています.
なお,拡張機能の追加という表現から解るように,
この機能はKISSの標準的な仕様ではありません.
fkissで追加されたイベント拡張機能は,
従来のKISSでは出来ないインタラクティブな機能を実現するものです.
例えば,
従来のKISSでは洋服などのオブジェクトをつかんで動かすことしかできませんが,
オブジェクトをつかんだらその形をかえるとか
音声を再生するとかいったことが出来るようになります.
他にも,何もしてなくても自動的にオブジェクトを動かしたりといったことが
出来るようになります.
もちろん従来のKISSでは実現不可能な事ですから 何らかの拡張が必要になるわけですが, fkissのイベント拡張機能は, KISSの仕様から逸脱しないように考慮してあります. この事により, fkissのイベント拡張機能を使っているが, 従来のKISSでも遊ぶことが可能なデータを作ることができるわけです.
それでは,具体的にどのような機能が必要かと考えると次のようになります.
これらの点について,従来のKISSとの互換性を考慮しつつ検討してみます.
まず,オブジェクトのアニメーションについては,
セルの表示/非表示を切り替えることで実現することができます.
幸いなことに従来のKISSでもセットによりセルの表示/非表示を指定する機能があり,
これによりアニメーションを行うことは簡単に出来そうです.
例えば,目パチのアニメーションをする場合には,
目を開いたセルと目を閉じたセルの表示/非表示を
交互に切り替えることで実現するわけです.
従来のKISSではどちらも表示されてしまうことになりますが,
目を開いたセルを手前にしておけば,
目を開いたままになります.
音声の再生については, 従来のKISSではそういったことは考慮されてないので新しい機構が必要です. 従来のKISSに悪影響が出ないように 音声データのファイルを別に用意することにします.
ローダの状態変更については, fkissのイベント拡張機能ではローダの状態変更ができるようになるというだけで, 従来のKISSではそれを手動で行うだけですから これといって問題はないでしょう.
以上機能的な点については,これといって問題はありません.
問題は,これらの機能を制御する仕組みをどうやって記述するかです.
これは,configファイルの中にこれらの指示を記述するという方法をとりました.
しかもその記述は,configファイルのコメント部分に記述するようにしたので,
従来のKISSではこの記述はコメントとして無視されるようになっています.
;@EventHandler ;@event1 action1-1 action1-2 ... ;@event2 action2-1 action2-2 ... : ;@eventN actionN-1 actionN-2 ...
最初の;@EventHandler
というのは識別子で,
これがあるとその行以降の;@
で始まる行が
fkissイベント拡張機能の記述とみなされます.
;@EventHandler
は行頭にないといけませんし,
;
と@
やEventHandler
の間に
空白があってもいけません.
また,eventhandler
とかEVENTHANDLER
のように
大文字小文字を無視してもいけません.
このfkissイベント拡張機能の記述は,
セルの記述行(#
で始まる行)の最後と
セットの記述行($
で始まる行)の最初の間に
記述するようにしてください.
イベントというのは, あるオブジェクトをつかんだ等の アクションを起こすための原因となるものです.
never()
initialize()
alarm(ch)
begin()
end()
press(cel)
release(cel)
catch(cel)
drop(cel)
fixcatch(cel)
fixdrop(cel)
unfix(cel)
set(set)
col(col)
in(cel1, cel2)
out(cel1, cel2)
leftside(cel1, cel2)
rightside(cel1, cel2)
upside(cel1, cel2)
downside(cel1, cel2)
アクションとは, あるセルを非表示にする等 実際にローダーが何をするかということです.
nop()
debug(str)
shell(str)
unmap(cel)
map(cel)
altmap(cel)
move(obj, dx, dy)
sound(file)
timer(ch, t)
randomtimer(ch, t, w)
quit()
changeset(set)
changecol(col)
transparent(cel, n)
windowsize(dw, dh)
viewport(dx, dy)