マップ冒険ゲームの最終回!

前回(13回目)に続き,今回は…
今回は,前回の「レクチャーⅢ イベントを作成する!①」の続きからとなるが,使用するflaも前回と同様の「GameMapAdv」を用いて進めていく。
- 実際のflaファイルGameMapAdv.fla(Flash CS3用のもの,Flash 8用のもの)
レクチャーⅢ イベントを作成する!②
前回は,「イベント位置データ」とマップに配置したイベントの解説を行い終了した。今回は,その続きからとなるので,イベント位置データによってマップ上に配置されたイベントの中身,実際のイベント内容やイベントコントロール,表示するメッセージなどについて解説を進めていく。
(1)イベントクリップ解説
マップ上に配置されたイベントの実際,各イベント内容は,「イベントクリップ」内に一括してまとめてあり,ここでイベントコントロールやメッセージ表示などを行っている。
今回のサンプルゲームでのイベントは,各イベントに対応するメッセージを表示するのみだが,基本的な作りとして,今回のようなイベントコントロールクリップを作り,その中でイベントコントロールを行うのが扱いやすい。
イベントクリップ内部では,ゲーム中に発生するev1~ev4の各イベントをタイムラインによって区分けして管理している。ev1~ev4は,多少の違いはあれど,基本的に同様な構造で同様なイベントコントロールによってイベント進行やメッセージ表示を行っている。
それでは,各イベント内容の解説をしていくが,主要なイベント「ev1」「ev2」の解説のみでご了承頂きたい。
(2)ev1「スコップの入手」解説
まず,イベント1(フレームラベル「ev1」)を解説すると…
- 〔①解説〕
このフレーム1は待機フレームであり,ゲームスタート時はstopによって停止になっている。また,各イベントが終了するとこのフレームにgotoStopしてくる。
ここに記したスクリプトは下記の通りで,_visible=falseによってイベントクリップの表示OFFを行い,各フラグ(変数)の値を初期値0に戻している。
- 〔②解説〕
PCがマップ上に配置されたイベント1上にいる状態で5キーが入力されると,このev1フレームへgotoPlayしてきて,ここから再生スタートする。
このフレームへgotoPlayしてくると,IF文によってイベントの発生判定を行う。フラグev1の値をチェックし,イベント1が未発生ならイベントを発生させ,発生済なら何も行わず待機フレームへ戻している。
- 〔③解説〕
このフレームで画面上にイベント終了ボタンを表示し,5キー入力の受付けを可にする。ev1のメッセージはフレーム3ですでに表示されているが,キー入力はこのフレームまで受付けない。この理由は,キー入力をメッセージ表示と同タイミングで許してしまうと,メッセージを読む前に誤って終了してしまう恐れがあるため。
- 〔④解説〕
イベント1の最終フレーム。ここでイベント1を発生済にし,待機フレームへ戻す。
stop ();
_visible = false;
../map:evEnd_input = 0; ―①
../map:keyNG = 0; ―②
① 〔③解説〕でも説明するが、イベント終了ボタンの入力を有効にするフラグ。0は不可、1が可で、待機フレームで値を0に戻している
② 以降の(4)でも解説するが、この値が1だとキー入力不可となり、PCは移動できなくなる。待機フレームで値を0に戻している
if (../map:ev1 == 0) {┓
_visible = true;|
play ();┛①
} else {
gotoAndStop (1); ―②
}
① フラグev1の値が0なら、このイベント1は未発生なので、イベントクリップを表示ONしてイベントを実行する
② フラグev1の値が1なら、このイベント1は発生済なので、何もせず待機フレームへ戻す
stop ();
../map:evEnd_input = 1; ―①
① evEnd_inputの値を1にすることにより、5キー入力を可にしている
../map:ev1 = 1; ―①
gotoAndStop (1);
① ev1の値を1にすることにより、イベント1は発生済となる。これによって「スコップ(フラグev1はスコップの入手という意味も兼ねる)」が入手済にもなる

