Flashを1から(=ω=)(4)
Flashを作る時、同じ画像を1コマずつ作るのはとても無駄な事で、何度も同じ画像を流用するために、画像は”シンボル”に変換します。シンボルに変換された絵は、インスタンス名が付けられるようになるので、スクリプトで動作を制御ができるようになります。
シンボルに変換する際には、タイプを選ぶ事になります。その3種というのが「ムービークリップ」「ボタン」「グラフィック」です。ムービークリップは中にプロパティを持たせたり、そのムービークリップの動きを制御するスクリプトを入れたりできます。ボタンも、ボタンが押された時の反応を記述する事ができます。グラフィックは動きのない画像なので、スクリプトを書く事はできません。背景など、まったく動かないものは”グラフィック”に、動くものは”ムービークリップ”に、ユーザーからの入力を受け付ける場合は”ボタン”にする感じです。JPEGなどを読み込んだ場合は自働でグラフィックとしてライブラリに入るので、それをムービークリップに変換する場合も出てきます。
ライブラリに入ったシンボルは”親”。ドラッグ&ドロップでステージにそのシンボルを落とせば、インスタンスという”子”が生成されます。インスタンスは、親の情報が完全に遺伝しているコピーですが、プロパティを変えたり、新たな要素を組み込む事ができます。
例えば、羽ばたくアニメのある鳥の絵を、ムービークリップシンボルに変換し、ライブラリに入れます。ライブラリに入った鳥の絵を複数個、自由にステージに配置する事ができます。元となる鳥の絵は一個なので、容量に影響を与えません。
”親”の情報が遺伝しているので、インスタンスはすべて「鳥の形」「羽ばたくアニメ」という情報を受け継いでいます。それぞれのインスタンスで大きさを変えたりしても、”親”となるシンボルも、兄弟となる他のインスタンスにも影響がありません。”子”はそれぞれ自立しているのです。もちろん”子”であるインスタンス1つ1つに、”斜めに飛ぶ””まっすぐ飛ぶ”という情報を追加で与える事もできます。
情報はそれぞれに持たせる事が出来ますが、ライブラリに入っている”親”シンボルを消してしまうと、”子”であるインスタンスもすべて消えてしまうので注意してください。グラフィックからシンボルを作成した場合も、元になるグラフィックを削除してしまうと、シンボルの絵も消えてしまいます。
今日は、上記シンボルのうちスクリプトが書かれる「クリップアクション」「ボタンアクション」そして「フレームアクション」という3種のアクションについて掘り下げていこうかと思います。ActionScriptの書かれるアクションは、それが書かれる場所によって3種類の分類があるのは前述した通り。
●フレームアクション
タイムラインの各キーフレームに書くスクリプトです。ここに書かれたスクリプトは、そのフレームが再生された時、自働で実行されます。Flashのタイムラインは、スクリプトで指定されていない限り、前から1コマずつ順番にキーフレームが実行され、最後に到達すると最初に戻る、という動作を繰り返します。
●クリップアクション(オブジェクトアクション)
クリップアクションはMCオブジェクトに記述します。クリップアクションはフレームアクションとは異なり、何かのイベントが発生して、はじめて実行されます。つまりは、アレが起こったらどうするか、という事を必ず記述する必要があるという事です。
それにはonClipEvent()ハンドラというイベントハンドラを使用します。イベントハンドラというのは、特定のイベントに反応して特定の処理を行うものです。
onClipEvent()の()内に、どのようなイベントが起こったら処理するのかというイベント内容を入れます。イベント内容は決まっていて、(load)にすればそのMCがメインのタイムライン上に表示されたら(読み込まれたら)実行される事になります。
load(読み込まれたら)、unload(消えたら)、enterFrame(再生されるたびに)というのがタイムラインイベント。マウスの動きなどユーザーの動作に反応するユーザーイベントであるmouseMove(マウスが動いたら)mouseDown(左クリック押されている状態)、mouseUp(左クリックが解除されたら)、keyDown(キーボードが押されてる状態)、keyUp(キー入力が解除されたら)、data(データを受信したら)があります。
クリップアクションは、メインとなるシンボルやインスタンスそれぞれに持たせる事もできるし、お互いを参照しあう事ができます。
しかしボタンの中にMCオブジェクトを置いた場合や、グラフィックシンボルから生まれたインスタンスは、スクリプトが動作しない、名づけられないので制御できないという難点もあります。
●ボタンアクション(オブジェクトアクション)
動作のさせ方はクリップアクションと同じく、イベントが発生したら動作します。違いとしてタイムラインにはスクリプトが書けず、ボタン本体に書く事になります。
ボタンのイベントを受け付けるにはon()ハンドラを使います。press(左ボタンが押されてる状態)、release(左ボタンの押された状態が解除されたら)、releaseOutsaide(ボタン以外の場所でボタンが解除されたら)、rollOver(カーソルがボタンにのったら)、rollOut(カーソルがボタンからはずれたら)、dragOut(ボタンの外までドラッグされたら)、dragOver(ドラッグした状態で一度ボタンの外に出て、ふたたび戻ったら)KeyPress()(キーが押されたら()内にどの文字か指定する)
ネットで落ちてるサンプルスクリプトや、本に載ってるサンプルスクリプトを真似して入力する際、何処に書けばいいのかわからない場合があります。最初、この違いが全然私にはわかりませんでした。3種あるのも知りませんでしたし。コピペしたのになぜ動かない!?という場合は大抵「on()イベントハンドラははボタンアクションに記述してください」みたいなエラーを出しまくってました。
ですから、スクリプトの中にイベントハンドラが入ってなければフレームアクション(タイムラインに書こう!)、onEnterFrame()があればクリップアクション(ムービークリップに書こう!)、on()が入っているならそれはボタンアクション(ボタンに書こう!)というように判断すれば間違いないと思います。
| 固定リンク
「Flash memo」カテゴリの記事
- Flashを1から(=ω=)(2)(2007.04.24)
- Flashを1から(=ω=)(4)(2007.04.26)
- Flashを1から(=ω=)(3)(2007.04.25)
- Flashを1から(=ω=)(1)(2007.04.23)
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/125642/14851850
この記事へのトラックバック一覧です: Flashを1から(=ω=)(4):

コメント