絵本スタック的Flash

スクリプトを書く

 Flashは動画が中心なだけあって、フレーム(コマ)を基本単位としている。
 大雑把にいって、HyperCardのカードみたいなもんだ。
 で、フレームにスクリプトを仕込むことができる。

 フレームにスクリプトを仕込むには、キーフレームを選択して、[ウィンドウ]-[アクション]で、アクションパネルを表示して、そこに書き込む。
 開いたウィンドウの左側にアクションが並んでいるので、適当なやつを選んでダブルクリックすると、オプションの入力パネルが出て、そこで細かな設定を行い決定すると、スクリプトが書かれる、というわけだ。
 マウスでコードを書くのは、すぐに面倒になるとは思うが、当分はリファレンス代わりになるというもの。
 普通にキーボードからコードを入力するには、アクションパネルの右上にある矢印のアイコンで、表示モードを[ノーマルモード]から[エキスパートモード]にかえればいい。

gotoAndPlay(1);

 てな感じに入力すれば、そのフレームが「表示される前」にスクリプトが実行され、1フレームに飛んで再生が続けられる。
 つまりは、これでループが作れるわけだ。
 ちなみに、gotoAndPlayは、パネルの左の"アクション/ムービーコントロール/"の位置にある。

ボタンにスクリプトを

 次にやりたくなるのは、HyperCardの紙芝居スタックの方式で、矢印ボタンで次のページへ、といったタイプのムービーだ。
 紙芝居方式なので、最初のフレームのスクリプトに「stop();」行を書いて、ムービーにならず静止画になるようにする。
 パブリッシュ設定で、最初は再生しないようにすることもできるらしい。

 次はボタンを用意する。
 Flashには一応、出来合いのボタンを用意してあるが、さほど種類もないみたいなので、自前でボタンの絵を描くことになる。
 ステージ(絵を描いたり、配置したりするところ)で、ボタンの絵を描いて[挿入]-[シンボルに変換...]でシンボル化、そのときに表示されるパネルでタイプ[ボタン]を選ぶ。
 シンボルってのはリソースみたいなもんで、同じシンボルを使いまわすことでファイルサイズと手間を省くことができる。
 で、シンボル化したボタンを選択した状態で、アクションパネルに切り替え、パネルの左から"アクション/ムービーコントロール/on"を選択し、releaseを選ぶ。
 releaseはボタンを離す時に発生するイベント、HyperTalkで言うところのmouseUpである。
 {と}の間にスクリプトを書けば、ボタンを押した時に実行される。
 そこに、HyperTalkのgo nextにあたるnextFrame() を書いておけば、次のフレーム(カード)に移動するというスンポーだ。
 ちなみに、go prevはprevFrame()だ。

on (release) {
	nextFrame();
}

 残念ながら、ビジュアルエフェクトは無いようだ。
 となるとトランジションの類いは、自前で作る必要があるわけだ、メンドっちいなぁ。
 でもまぁ、紙芝居形式のスタックの移植はできたも同然。
 ちなみに、pervFrame()とnextFrame()は、最初と最後でループはしない。最後のフレームでnextFrame()を実行した場合、何も起きない。

メモ

 goto〜とかの、フレームを移動する命令は、最後に指定したものが優先される。
 で、ムービークリップの方で指定していたら、_rootのフレームで指定したスクリプトよりも後で実行されるので、ムービークリップの方が優先される。
 これを回避するには、適当なフラグを作っておいて、フレームの移動命令は、1フレームにつき1度だけにするようにしなければいけないわけだけど、ちと面倒。

本日の成果

click.fla.zip(5Kbytes)

 今日はここまで。


2003-06-19