# $Header: /home/yav/catty/fkiss/RCS/fkissex1.doc,v 1.2 2000/09/11 07:21:56 yav Exp $ fkissの拡張機能の解説 なんか最近fkissの拡張機能対応のデータをちらほらとみかけるようになって fkissの拡張機能についてコメントしとかないといけないなと思ったんで, 簡単に解説しておきます. まず,fkissの拡張機能に対する記述はcnfのセル記述行の最後の行から ファイルの終までの間に";@"で始まる行として記述します. その最初の行は識別用の";@EventHandler"でなければいけません. それ以降は ;@出来事 動作その壱 動作その弐 ... 動作そのn ; 註釈 というように,出来事が発生した場合にどのような動作をするかを記述します. 該当した出来事が発生するとその後の動作が実行されます. 理想としては並列同時実行が望ましいのですが,その実行順序は処理系依存です. (世の中にはイメージを下のラスタから格納するフォーマットを作る人もいるので, 動作そのnから動作その壱の順で実行するように実装する人もいるかも...) ";"以降行末までは無視されるので註釈をつけるのに利用してください. 出来事は全部で64個まで指定することができます. ひとつの出来事につき最大64個までの動作を指定できます. 出来事には指定のオブジェクトをマウスで掴んだ場合とかを指定するわけですが, 特にオブジェクトを掴む行為に関してはpress, catch等数種類用意されてます. pressとcatchの違いは, どんなオブジェクトでもその上でマウスのボタンを押すことでpressできる. 固定値のついてるオブジェクトはcatchできない場合がある. という点です. fkissでは,cnfに最大の固定値で記述してあるセルを含むオブジェクトは マウスで掴んで動かすことができません. ですから,catchとpressのどちらでもいい場合には pressを使うようにしたほうがいいでしょう. 出来事にはこのようにユーザーの操作に起因するものの他に, 最初にウィンドウが表示されたとき発生するbeginや終了時に発生するend, 内部タイマーにより発生するalarmといったものがあります. 内部タイマーは0から63チャンネルまでの最大64個用意されていて, それぞれセットした時刻になるとalarm(n)が発生します. 動作にはセルの表示状態の変更やオブジェクトの移動を指定します. mapはセルを見えるようにする,unmapはセルを見えなくする動作ですが, これで表示非表示を変更するセルも他のセルと同様に cnfのセル記述行のセット指定で表示されないようになってると非表示のままです. map,unmap,altmapは指定するセルの表示状態を変更するもので, あるオブジェクトのセルすべての表示状態を変更することはできません. また,セルの指定はセル記述行に書いたセルファイル名とまったく同じものを 使って指定するようにしてください.(大文字小文字も厳密に) オブジェクトの移動はmoveで指定します. これは現在のオブジェクトの位置からの相対移動ですが, マウスでオブジェクトを動かすのと同様に画面からはみ出すことはありません. これを利用すれば指定する絶対座標へ移動することも可能です. (もっとも,本来なら別に起動時の位置からの相対移動が欲しいところですが) タイマーはtimerで設定します. そのtimerが記述されてる出来事が発生した時刻から指定するミリ秒後に alarmが発生するようにタイマーが設定されます. もちろんシステムによっては予定の時刻から遅れてalarmが発生しますが, 次のalarmの発生時刻はその遅れも含めて計算し誤差が積算しないようになってます. 0ミリ秒後という指定だと,そのチャンネルのタイマーを解除します. このタイマーでアニメーションさせる場合には, 最小でも1/60秒 = 16.666...ミリ秒の間隔を空けたほうがいいでしょう. これ以下だとシステムによっては途中が表示されない可能性があるからです. 以上,出来事と動作についての簡単な説明です. ここで書いていない事については省略しましたので, 他にどのような出来事と動作が指定できるかについては fkissのkisseve.c等を参照してください. fkissのイベント拡張機能は次期KISSにどういったものを盛り込めばいいのか というのを調べるためにyavがKISSにかってに追加してみた機能であり, KISSの標準ではありません. このため,その記述形式はすっごくプリミティブなものになっています. つまり簡単にローダに組み込んで実験できるように原始的な記述になってます. さらに,ヘンな過去をひきずらないようにワザとキーワードを長くて わかりにくいものにしてあります. ですから,この記述がそのまま次のKISSの規格として採用されることはありません. この記述とはぜんぜん違う,もっと簡単に記述できる方式が採用されるでしょう. (そうでなければ困ります.alarm/timerと格闘するのはうんざりでしょ?) 不明な点がありましたら,私宛にメールしてください. yav