■■■■■■■■■■■■■■■■■■■
■■■
■■ FlaXe イベント/アクション逆引きリファレンス
■
本説明書が想定しているバージョンは
です。
■本テキストについて
本テキストはFlaXe(※1)のイベント/アクションについての
逆引き(目的別)リファレンスになっています。
FlaXeの基本仕様についての情報は別途該当するファイルを参考にしてください。
※1 FlaXeはFlashで制作された、ブラウザ上で着せ替えを行うツールです。
着せ替えデータの形式はKISSに準拠します。
イベント/アクションについてはfkissの一部に対応します。
目次
本テキストについて
イベント/アクションの概要
目的別イベント/アクション
▼イベントを開始する準備をしたい
▼目パチさせる/一定間隔・不定間隔でアニメーションをさせたい
▼クリックしている間、そのパーツの絵を変化させたい
▼透明なボタンを押すたびにパーツの表示/非表示を切り替えたい
▼固定値を持つパーツがドラッグ可能になったらアクションを実行したい
▼ボタンを押してセットを切り替えたい
▼音を鳴らしたい
▼自動的に一定方向へ動きつづけるオブジェクト/セルを作りたい
▼クリックする度にだんだん透明になるセルを作りたい
▼その他のイベント/アクション
Tips
■イベント/アクションの概要
・イベント設定行の書式
===========
イベント/アクションは、イベント設定行に以下の書式で記述されます。
書式1
;@<イベント>[ <アクション1>[ <アクション2>...]]
また、複数行に分けて記述することもできます。
書式2
;@<イベント>
;@ <アクション1>[ <アクション2>...]
1つのCNFファイル内で書式1と2を組み合わせて使うことも可能です。
ポイントはイベントを先頭にしてアクションが1つあるいは複数記述されるという点です。
それぞれは以下のように分類されています。
イベント :イベント以降に続くアクション群を実行するタイミングを定義します。
例)initialize() … 初期化時に実行されます
press(#1) … オブジェクト#1がマウスでクリックされたときに実行されます
アクション:イベントが発生したときにFlaXeが実際に行うべき行動を記述します。
例)timer(1,2000) … タイマー1を2000ミリ秒後にセットします。
unmap(#1) … オブジェクト#1を非表示にします。
・イベント設定行の記述位置
=============
イベント設定行は@EventHandlerを先頭にして、セル設定行群より後、セット設定行群よりも
前に置かれます。
例)
;セル設定行群
:
#1.99 hoge.png :0 1 2 3
;イベント設定行群
;@EventHandler
:
;@end()
;セット設定行群
$ 0,0 0,0 0,0 200,100 * 0,0
:
$ 0,0 0,0 0,0 200,100 * 0,0
コメント行はイベント記述行群の中に任意で記述することができます。
・イベント記述時の注意
===========
記述の際の注意事項を以下に示します。
・ イベント/アクションは基本的に半角英数で記述されます。
・ 複数のイベント/アクションの間は半角スペースまたはTABで区切ります。
・ EventHandlerよりも以下のイベント/アクションのみ有効です。
・ EventHandlerやセルファイル名を含め、基本的にイベント/アクションは
大文字小文字が厳密である必要があります。
・ 任意のイベントの後に続くアクション群は、タイミング的には同時に反映されます。
ただし、実行順は記述の順序の通りになります。
・ イベントを記述する順序は問われません。
(alarm(2)がalarm(1)の前に来ても、begin()がend()の後に来ても構いません)
■目的別イベント/アクション
以下では各目的項目ごとに、各イベント/アクションの「書式」、「説明」、
やりたい動作を実行させるための「記述例」について説明を行います。
・書式部の説明
[イベント/アクション書式]では任意のオブジェクト番号を記述する箇所を<#obj>、
任意のセルファイル名を記述する箇所を<celfile>として記述します。
セルファイル名を記述する場合は""(ダブルクォーテーション)で囲む必要があります。
多くのイベント/アクションで、オブジェクト名とセルファイル名の
いずれの書式でも許される場合があります。
そういった箇所を<#obj/cel>として記述します。
また、イベントの先頭には;@を示し、;@に続いて命令を記述することを表し、
アクションの先頭には;@… と示し、;@で始まる行の後方に記述されることを表します。
;@は常に行頭のみに記述することになりますので注意してください。
以下の例でalarm()はイベント、unmap()とmap()はアクションです。
正しい例)
;@alarm(1) unmap(#1) map(#2)
間違った例)
;@alarm(1) ;@unmap(#1) ;@map(#2)
・fkiss対応表
▼イベントを開始する準備をしたい
[イベント/アクション書式]
;@EventHandler
;@initialize()
;@begin()
これらの命令は()内にパラメータを取りません。また、EventHandlerには()を付けません。
EventHandler :イベント/アクションを使うことを宣言します。
[宣言] これをイベント/アクション記述部の最初に記述しないとイベント/アクションは
実行されません。
initialize() :着せ替え開始前に発生するイベントです。
[Event] オブジェクトやセルが表示される前の段階になりますので使用できるアクションが
限定されます。FlaXeでサポートされているのはnop()とunmap()の2つですが、
nop()は何もしないことを示すアクションですので、結局unmap()のみを行います。
着せ替え画面が表示される前に、最初に表示しないセル(アニメーションの先頭以外など)
をunmap()で非表示にしておくのに使用します。
begin() :着せ替え開始時に発生するイベントです。
[Event] こちらは実際に着せ替えが始まった(画面が表示された)瞬間に発生するイベントです。
最初に実行したいtimer()をセットするのが主な使用法です。
▼目パチさせる/一定間隔・不定間隔でアニメーションをさせたい
[イベント/アクション書式]
;@… timer(<タイマー番号>,<時間>)
;@… randomtimer(<タイマー番号>,<時間1>,<時間2>)
;@alarm(<タイマー番号>)
;@… map(<#obj/cel>)
;@… unmap(<#obj/cel>)
timer() :指定時間(単位:ミリ秒)後にタイマー番号で指定された
[Action] alarm()イベントを実行します。
また、タイマーは動作中でも(同じタイマー番号により)上書きしてセットすることができ、
時間に0を指定するとタイマーが解除されます。
例);@・・・ timer(1,2000)
2000ミリ秒後(=2秒後)にalarm(1)のイベントが実行するようにセットします。
例);@・・・ timer(1,0)
タイマー1を解除します。(alarm(1)は実行されません)
randomtimer() :ランダムに計算された時間後にタイマー番号で指定された
[Action] alarm()イベントを実行します。
ランダムに計算された時間とは、以下のように計算されます。
時間1(単位:ミリ秒)+時間2(単位:ミリ秒)×乱数値(範囲:0〜1)
従って、時間1〜(時間1+時間2)の間のいずれかになります。
例);@・・・ randomtimer(1,50,2000)
50ミリ秒〜2050ミリ秒の間でalarm(1)のイベントが実行するようにセットします。
すなわち時間1が下限、時間2がランダムな時間幅を表します。
alarm() :timer()あるいはrandomtimer()でセットされたタイマーに合わせて
[Event] 続くアクションを実行するイベント命令です。
タイマー番号はtimer()、randomtimer()での指定と同じものを記述します。
例);@・・・ timer(1,2000)
;@alarm(1) 〜〜〜
timer()命令が実行されてから2000ミリ秒後に〜〜〜の内容のアクションが実行されます。
map() :指定したオブジェクト/セルを表示状態にします。
[Action] 表示状態というのは、そのオブジェクト/セルが現在のセットで使用されていれば
その時点で表示されますが、現在のセットに含まれていない場合は、そのセットに
切り替わったときに表示されるようにしておくということを指します。
例);@・・・ map(#1)
オブジェクト1を表示状態にします。
unmap() :指定したオブジェクト/セルを非表示状態にします。
[Action] 対象オブジェクト/セルが現在のセットで使用されていれば非表示になります。
現在のセットに含まれない場合は、使用セットに切り替わったときに非表示になるようにします。
例);@・・・ unmap("shoes.png")
shoes.celを非表示状態にします。
例)
;@EventHandler
;@initialize() unmap("eyesHalf.png") unmap("eyesClose.png")
;@begin() timer(1,2000)
;@alarm(1) unmap("eyesOpen.png") map("eyesHalf.png") timer(2,50)
;@alarm(2) unmap("eyesHalf.png") map("eyesClose.png") timer(3,50)
;@alarm(3) unmap("eyesClose.png") map("eyesHalf.png") timer(4,50)
;@alarm(4) unmap("eyesHalf.png") map("eyesOpen.png") timer(1,2000)
1行目でイベント/アクションの使用を宣言します。
initialize()によって、着せ替えが始まる前の時点で最初に使うセル以外を非表示にしておきます。
begin()によって、目パチを開始するためのタイマー1を始動させます。2000ミリ秒(=2秒)後に
以下の行で記述されたアラームが実行されることになります。
alarm(1)〜alarm(4)で最初のアラーム1が実行された後目パチのパターンを順次切り替えていきます。
各アニメーションの間隔は50ミリ秒に設定されています。
目パチが終了した最後のタイマーは、再び間隔を空けてアラーム1に対応させます。
この例では一定間隔(2秒)で目パチが行われますが、実際目パチを行う場合は
randomtimerを使うとより効果的でしょう。以下にその場合の例を示します。
例)
;@EventHandler
;@initialize() unmap("eyesHalf.png") unmap("eyesClose.png")
;@begin() randomtimer(1,50,2000)
;@alarm(1) unmap("eyesOpen.png") map("eyesHalf.png") timer(2,50)
;@alarm(2) unmap("eyesHalf.png") map("eyesClose.png") timer(3,50)
;@alarm(3) unmap("eyesClose.png") map("eyesHalf.png") timer(4,50)
;@alarm(4) unmap("eyesHalf.png") map("eyesOpen.png") randomtimer(1,50,2000)
目パチは50〜2050ミリ秒の間隔でランダムに行われます。
begin()部だけでなく、目パチ終了時のタイマー記述も変更しないと2回目以降の
アニメーションに反映されません。
▼クリックしている間、そのパーツの絵を変化させたい
[イベント/アクション書式]
;@press(<#obj/cel>)
;@release(<#obj/cel>)
press() :マウスのボタンを押したときにイベントを発生させます。
[Event] ()で指定したオブジェクト/セルがクリックされた場合に該当するpress()イベントが発生します。
release() :マウスのボタンを離したときにイベントを発生させます。
[Event] ()で指定したオブジェクト/セルがクリックされていた場合に該当するrelease()イベントが発生します。
例)
;@EventHandler
;@initialize() unmap("drag.png")
;@press(#1) unmap("normal.png") map("drag.png")
;@release(#1) unmap("drag.png") map("normal.png")
初期状態ではnormal.pngが表示され、drag.pngは非表示になっています。
オブジェクト1をクリックするとpress(#1)イベントが発生し、
normal.pngが非表示になり、drag.pngが表示されます。
その状態でマウスを離すとrelease(#1)イベントが発生し、
元の表示状態に戻ります。
▼透明なボタンを押すたびにパーツの表示/非表示を切り替えたい
[イベント/アクション書式]
;@… altmap(<#obj/cel>)
altmap() :指定したオブジェクト/セルの表示状態を反転させます。
[Action] 表示されている場合は非表示に、非表示の場合は表示になります。
オブジェクト/セルが現在のセットで使用されている場合、結果はそのまま画面に反映されますが、
現在のセットで使用していない場合は、使用するセットに移動したときの表示/非表示に影響します。
単純に表示を反転させる場合以外、すなわち一意にmapやunmapで書けるところを
実行される時点での表示/非表示を推測してaltmapで済ませるのはお勧めしません。
タイミングやセット移動、マウスがflash範囲外に移動した場合などにpress()、release()が
必ずしも対応していない場合が想定されるからです。
透明なボタンはセル設定行で透明度(%t)を256にすることで実現できます。
このボタンは透明ですが、press()やrelease()などのイベントを発生させることができます。
ただし以下の点に注意してください。
ドラッグされる別のオブジェクト/セルの上にボタンを置いた場合、ボタンの部分をドラッグしようとした時、
そのオブジェクト/セルをドラッグすることができません。
逆に他のオブジェクト/セルの下にボタンを置くと、そのボタンを押すことはできません。
これは一番上(手前)のオブジェクト/セルのみがマウスで操作可能だからです。
ドラッグするオブジェクトに透明なボタンを含んだ場合は、ボタン部分でもドラッグできます。
このとき、オブジェクトをドラッグすると透明なボタンも一緒にドラッグされます。
例)
;@EventHandler
;@press("button.png") altmap("secret.png")
button.pngをクリックするたびにsecret.pngの表示/非表示が切り替わります。
▼固定値を持つパーツがドラッグ可能になったらアクションを実行したい
[イベント/アクション書式]
;@unfix(<#obj/cel>)
unfix() :ドラッグの結果、指定したオブジェクト/セルの固定値が0になったときに
[Event] イベントを発生させます。
例)
;@EventHandler
;@unfix(#1) timer(1,1000)
オブジェクト1がドラッグで外れたときから1000ミリ秒(=1秒)後にアラームが動作するようにタイマー1をセットします。
▼ボタンを押してセットを切り替えたい
[イベント/アクション書式]
;@… changeset(<セット番号>)
changeset() :セット番号で指定したセットに切り替えます。
[Action] セット番号は0以上の整数で0〜9とされています。
初期セットは0であることに注意してください(1ではありません)。
例)
;@EventHandler
;@press("setbutton0.png") changeset(0);
;@press("setbutton1.png") changeset(1);
;@press("setbutton2.png") changeset(2);
対応するセルをクリックするとセットを切り替わります。
▼音を鳴らしたい
[イベント/アクション書式]
;@… sound(<音声ファイル名>)
sound() :音声ファイル名で指定した音声ファイルを再生します。
[Action] 音声ファイルはmp3形式である必要があります。
音声の再生中にsound()を実行した場合、再生中の音声を中断して新しい音声を再生します。
音声ファイル名の記述にはファイルのパス(相対あるいは絶対パス)を含むこともできます。
ネットの状況、音声ファイルの大きさにより音声再生に遅延が生じる場合があります。
例)
;@EventHandler
;@begin() sound("start.mp3");
着せ替え開始時にstart.mp3を再生します。
▼自動的に一定方向へ動きつづけるオブジェクト/セルを作りたい
[イベント/アクション書式]
;@… move(<#obj/cel>,<x方向移動量>,<y方向移動量>)
move() :指定したオブジェクト/セルを移動します。
[Action] x方向、y方向の移動量をピクセル単位で指定します。
x方向では正の値を指定すると右へ、負の値を指定すると左へ移動します。
y方向では正の値を指定すると下へ、負の値を指定すると上へ移動します。
例)
;@EventHandler
;@begin() timer(1,1000);
;@alarm(1) move(#1,-10,0) timer(1,1000)
オブジェクト1を1000ミリ秒(=1秒)毎に左へ10ピクセルずつ移動します。
▼クリックする度にだんだん透明になるセルを作りたい
[イベント/アクション書式]
;@… transparent(<#obj/cel>,<透明度>)
transparent():指定したオブジェクト/セルの透明度を変更します。
[Action] 透明度は0〜256の範囲の値で、256で完全な透明になります。
大きくなるほど透明になる点に注意してください。
透明度が設定されていないセルは0の完全不透明となります。
transparent()ではこの透明度を変更しますが、この際加算的に変更を行います。
そのセルの新しい透明度は、(元の透明度)+(transparent()で指定した透明度)
になります。負の値を指定することもできます。
FlaXeでは独自拡張として、透明度の値を先頭イコール付きで、
「=○○」という記述をした場合に加算的ではなく絶対的な変更、
すなわちオブジェクト/セルの透明度を○○に置き換えます。
例)
;@EventHandler
;@press("button.png") transparent("see-through.png",40)
button.pngをクリックするたびにsee-through.pngは透明に近くなっていきます。
以下に「=○○」の書式を使った例を示します。
例)
;@EventHandler
;@press("btn0.png") transparent(#1,=0)
;@press("btn90.png") transparent(#1,=90)
;@press("btn160.png") transparent(#1,=160)
;@press("btn256.png") transparent(#1,=256)
btn0.png〜btn256.pngの各ボタンを押すと、それに対応してオブジェクト1の透明度が切り替わります。
▼その他のイベント/アクション
[Event];@never()
:このイベントは決して発生しません。
したがってnever()に続くアクションも実行されることはありません。
[Action];@nop()
:何もしない、というアクションです。実行時には無視されます。
[Event];@set(<セット番号>)
:セット番号で指定したセットに切り替わったときに発生するイベントです。
・press()、release()と類似した4つのイベントを以下に示します。特に相違点について説明します。
[Event];@catch(<#obj/cel>)
:指定したオブジェクト/セルが掴まれたときに発生するイベントです。
press()がマウスの動作に主体を置いているのに対して、
catch()ではオブジェクトの動作に主体があります。
特に必要がない場合はpress()を使用することが勧められています。
[Event];@drop(<#obj/cel>)
:指定したオブジェクト/セルが掴まれた状態から離されたときに発生するイベントです。
release()がマウスの動作に主体を置いているのに対して、
drop()ではオブジェクトの動作に主体があります。
マウスを押しつづけている場合でも、固定値によって掴む動作が中断された(オブジェクトが
元の位置に戻った)場合には即座に発生するdrop()に対し、
その後もマウスボタンが離される時点までrelease()は発生しません。
[Event];@fixcatch(<#obj/cel>)
:指定したオブジェクト/セルの固定値が0以上の場合に限り、掴まれたときに発生するイベントです。
ドラッグの結果、固定値が0になると発生しなくなります。
[Event];@fixdrop(<#obj/cel>)
:指定したオブジェクト/セルの固定値が0以上の場合に限り、離されたときに発生するイベントです。
ドラッグの結果、固定値が0になると発生しなくなります。
・以下のイベント/アクションは未検証になります。
[Event];@end()
:着せ替え終了時にイベントを発生させます。
FlaXeではFlash表示部を閉じるという動作が無いために未検証です。
[Action];@quit()
:着せ替えを終了します。全てのセルを非表示にします。
FlaXeではFlash表示部を閉じるという動作が無いために未検証です。
■Tips
まだありません。