「イベント」の版間の差分
(→カスタムイベントを使いたい) |
(→カスタムイベントを使いたい) |
||
| 71行: | 71行: | ||
console.log("hitTest"); | console.log("hitTest"); | ||
} | } | ||
| + | addEventListenerの第1引数は対応するイベントの指定。<br/> | ||
| + | 第2引数はイベントを受け取った際に実行する関数を入れます。<br/> | ||
| + | <br/> | ||
リスナーを設定したMovieの任意のフレームに下記のスクリプトを記述すると、そのフレームが再生されるタイミングで | リスナーを設定したMovieの任意のフレームに下記のスクリプトを記述すると、そのフレームが再生されるタイミングで | ||
| − | + | 先ほど設定した関数が実行されます。<br/> | |
/* js | /* js | ||
//イベント発火 | //イベント発火 | ||
this.dispatchEvent("hitTest"); | this.dispatchEvent("hitTest"); | ||
*/ | */ | ||
| − | + | ||
| − | + | <br/> | |
| + | ※Flashのイベントとは違い、Movieに発火したイベントは子Movieに伝播していくわけではないので注意してください。<br/> | ||
2013年10月21日 (月) 21:42時点における版
目次 |
イベントとは?
MovieインスタンスやButtonインスタンスにイベントを設定することで
インスタンスが生成された瞬間や、インスタンスの描画準備が整った瞬間、毎フレームの処理、任意のイベントを発火した瞬間、等
様々なタイミングで関数を実行したりすることができます。
Movieが生成された瞬間に関数を実行したい
Movieインスタンスが生成された瞬間に関数を実行したい場合のサンプルです。
- attachMovieで追加したMovieの場合
//attachMovieでインスタンスが生成された瞬間アラートを表示
<Movieインスタンス>.attachMovie("linkageName","movieName",{
"load":function(){
alert("このMovieは今、生成されました");
}
});
- フレームスクリプトで記述する場合
該当するタイムラインの1フレーム目に記述します。
/* js_load
alert("このMovieは今、生成されました");
*/
上記のjs_load指定は1Movieにつき1つまでです。
Movieの再生準備が整ったら関数を実行したい
Movieインスタンスが生成され、描画の準備が整った瞬間に関数を実行したい場合のサンプルです。
- attachMovieで追加したMovieの場合
//attachMovieでインスタンスが生成され、描画準備が整った瞬間アラートを表示
<Movieインスタンス>.attachMovie("linkageName","movieName",{
"postLoad":function(){
alert("このMovieの描画準備が整いました");
}
});
- フレームスクリプトで記述する場合
該当するタイムラインの1フレーム目に記述します。
/* js_postLoad
alert("このMovieの描画準備が整いました");
*/
上記のjs_postLoad指定は1Movieにつき1つまでです。
Movieが削除された瞬間に関数を実行したい
Movieインスタンスが削除された瞬間に関数を実行したい時のサンプルです。
- スクリプトで指定する場合
//削除された時のイベントリスナーを設定
<Movieインスタンス>.addEventListener("unload",function(){
alert("このMovieは削除されました");
});
- フレームスクリプトで記述する場合
該当するタイムラインの1フレーム目に記述します。
/* js_unload
alert("このMovieは削除されました");
*/
上記のjs_unload指定は1Movieにつき1つまでです。
毎フレーム実行させたい
Movieの更新処理が走る度(毎フレーム)に関数を実行させたい場合のサンプルです
更新処理が走る度なので、movie.active=falseになっている場合は実行されません。
- スクリプトで指定する場合
<Movieインスタンス>.addEventListener("enterFrame",function(){
console.log("毎フレームはしってます");
});
- フレームスクリプトで記述する場合
該当するタイムラインの1フレーム目に記述します。
/* js_enterFrame
console.log("毎フレームはしってます");
*/
上記のjs_enterFrame指定は1Movieにつき1つまでです。
カスタムイベントを使いたい
カスタムイベントを使えば、自分の好きなタイミングでイベントを発火し、そのタイミングで関数を実行することが出来ます
例えば、剣を振るアニメーションがあったとして、当たり判定が発生するフレームにカスタムイベントを発火すれば
そのタイミングで、当たり判定の計算ができるといった具合です。
下記はそのサンプルになります。
//イベントリスナーを設定
<Movieインスタンス>.addEventListener("hitTest",function(){
console.log("hitTest");
}
addEventListenerの第1引数は対応するイベントの指定。
第2引数はイベントを受け取った際に実行する関数を入れます。
リスナーを設定したMovieの任意のフレームに下記のスクリプトを記述すると、そのフレームが再生されるタイミングで
先ほど設定した関数が実行されます。
/* js
//イベント発火
this.dispatchEvent("hitTest");
*/
※Flashのイベントとは違い、Movieに発火したイベントは子Movieに伝播していくわけではないので注意してください。