[PR] 恋愛占い
MENU
脱出ゲームの作り方
7.メッセージ機能実装


前回の第6章では、メイン画面、メッセージ画面、アイテム画面を
それぞれスプライトで分離し、_rootに配置いました。
第7章では、実際にメッセージ機能を実装していきます。

実装するメッセージ機能の仕様は以下のようにします。
 ・特定のオブジェクトをクリックすると、それに応じて何かメッセージを表示
 ・それ以外のオブジェクトをクリックすると、適当なメッセージを表示
 ・メッセージは表示されて数秒経ったら、自動的に消える

まず、「特定のオブジェクトをクリックすると、それに応じて何かメッセージを表示」
という機能に関して考えてみましょう。
ここでいう特別なオブジェクトとは、ベッドやスイッチのことを指します。
今まで行ってきたことは、「スイッチを押したらフラグを変える」といったものでしたが、
これに追加で「メッセージを表示する」という命令を書き加えれば解決できそうです。


では、「メッセージを表示するという命令」はどうやって書けばよいのでしょう?
私の場合は、以下のように機能を実装しています。

最初に、スプライト:message側に記述するプログラムを考えます。
まず、テキスト:text_messageを作成しスプライト:messageに追加します。
テキストを作成する際、変数名のところに忘れず「text_message」と入力してください。
また、「ラベル:message」を追加します。
そして、ラベル:messageの下に、
 ・アクション:スクリプト:text_message = _root.message;
 ・アクション:何もしない(40フレーム)
 ・アクション:スクリプト:text_message = "";
と、3つ追加します。

最終的に、スプライト:message_windowは以下のようになります。

スプライト:message_window

このプログラムにおいて、ラベル:messageに遷移した場合、
text_messageに_root.messageを表示し、40フレーム待ち、
text_messageの表示を消す、といった処理の流れになります。


これで、スプライト:message_windowの実装が完了しました。
次に、スプライト:main_window側に記述するプログラムを考えます。

スプライト:message_windowにメッセージを表示させるには、
 ・_root.messageに表示したいメッセージを格納
 ・スプライト:message_windowのフレームをラベル:messageまで遷移
の2つの処理を行う必要があります。
まず、_root.messageにメッセージを格納する場合は、
単に、「_root.message = "(表示した文字列)"」と記述すればOKです。

次に、スプライト:message_windowのフレームをラベル:messageまで遷移させる方法ですが、
単純に、「gotoAndPlay("message")」と記述したのではダメです。
というのは、現在処理を記述したスプライトがmain_windowで、
ラベル遷移をさせようとしているスプライトがmessage_windowになるからです。
つまり、スプライトをまたいで処理をしようとしているからですね。

スプライトをまたいだ処理をしようとしている場合は、
その処理を行いたいスプライトを明示する必要があります。
具体的には、「_root.message_window.gotoAndPlay("message")」と記述します。
こうすることで、_rootに配置されているスプライト:message_windowに対して、
ラベル:messageへ遷移せよ、とスプライトを明示して処理できるようになります。

それでは、実際に何かメッセージを表示させてみましょう。
例えば、room1にあるベッドをクリックしたときに、
「これはベッドだよ」と表示させたいとします。
これを実現するには、
ベッドのオブジェクトをボタンに設定しまして、以下のようにスクリプトを記述します。

on (release){
	_root.message = "これはベッドだよ";
	_root.message_window.gotoAndPlay("message");
}

その他のオブジェクトに対しても、同様にスクリプトを記述することで、
好きなメッセージを表示させることが出来ます。

補足事項ですが、メッセージに改行を入れたい場合は、
「\n」と記述することで、改行することが出来ます。
 例:_root.message = "改行したいなぁ\n改行できた"


最後に、特別に設定していない箇所をクリックした場合、
適当なメッセージを表示するという機能を追加します。
これはちょっとした工夫が必要でして、
メッセージを表示させるボタンをスプライト:main_windowではなく、
_rootに配置・記述してしまいます。
透明化したred.bmpを適度なサイズに拡大して配置し、スクリプトを記述しましょう。








最終的に出来上がったFLASHは以下のようになります。


特定のオブジェクトをクリックした場合は、それに応じたメッセージが表示され、
それ以外のオブジェクトをクリックした場合は、「何もないなぁ…」と表示されることがわかります。



以上で、メッセージ機能の実装は終了です。
ここで、スプライトと変数のスコープについて追記しておきます。
今回、メッセージを格納しておく変数として、
_root.messageという変数を使いました。
これ、_rootを取っ払って、messageという変数にするとどうなるでしょう?
答えは、メッセージ機能が上手く動作しなくなります。

これを説明するには変数のスコープという概念を理解する必要があります。
_rootに3つのスプライトを配置した場合、
位置関係をイメージ的に表すと、下の図のようになります。

_rootとスプライトの位置関係


このとき、スプライト:main_windowにおいて、
message = "あいうえお"と記述したとします。
すると変数:messageは、スプライト:main_window内に蓄えられます(下図)。

message:あいうえおが蓄えられる場所

次に、スプライト:message_windowにおいて、text_message = messageと記述したとします。
この場合スプライト:message_windowは、
スプライト:message_windowの中に記述されている変数messageを参照しようとします。
しかし、先ほど記述した変数:messageは、スプライト:main_windowの中に蓄えられており、
スプライト:message_windowは変数を参照しようにも参照できません(下図)。

messageが参照できない


では、スプライト:main_windowにおいて、_root.message = "あいうえお"と記述したとします。
このとき、変数:messageは_root内に蓄えられます(下図)。

_root.messageと記述した場合


その上で、スプライト:message_windowにおいて、
text_message = _root.messageと記述した場合、今度は、
_rootに蓄えられている変数:messageを参照しようとします。
この場合は、変数:messageを参照できるので、正常にメッセージ機能が動作します(下図)。

messageを参照できる


この、「記述した変数がどこに蓄えられるか?」という概念は、
スプライトを扱う上で非常に重要です。
最初のうちは、「記述したはずの変数を参照できない!」という所で結構つまづきますので、
この辺りに気を配れるかどうかがカギとなってきます。


第7章はこれで終了です。
次回からはいよいよアイテムの話に入ります。
これまでの解説してきた、フラグ・スプライト・スプライトのスコープといった概念を
フルに活用する必要がありますので、注意して読んでみて下さい。

この章で作成したファイルはこちらから。
  lzh形式
  zip形式
※このファイルは使用・流用は自由としますが、そのままの転載は不可とします。
使用・流用した場合、強制ではありませんが、連絡・クレジット等をしていただければ幸いです。








次章:8.アイテムの取得
前章:6.スプライトによる機能分離
Home

MENU




本館
Home
1.はじめに
2.部屋の遷移について
3.画面の遷移について
4.フラグについて
5.表示の変化について
6.スプライトで機能分離
7.メッセージ機能実装
8.アイテムの取得
9.アイテムの表示
10.アイテムの使用
11.about item(前編)
12.about item(後編)
13.細かいこと
14.アップしない引き出し
15.パスワード入力装置
16.タイトルとオープニング
17.アフィリエイトについて















☆★☆ LINE スタンプ ☆★☆

WANPA WORLD

辛口ユカちゃん

忙しいけどオイラ「ヒマ人」



☆★☆ Amazon ☆★☆



☆★☆ 楽天ショッピング ☆★☆


☆★☆ 楽天トラベル ☆★☆



☆★☆ オススメ:ウォーターサーバ ☆★☆
■島根のおいしい天然水
オススメ!
■スマイルベビー水
島根のおいしい天然水 スマイルベビー水



☆★☆ オススメ:FX取引 ☆★☆
■SBI FXトレード
オススメ!
■FXプライム
FXプライム
■東岳証券 ■MATRIX TRADER
ヒロセ通商 MATRIX TRADER



Copyright(C) 2007-2015 WANPA. All rights reserved.