前回の第6章では、メイン画面、メッセージ画面、アイテム画面を それぞれスプライトで分離し、_rootに配置いました。 第7章では、実際にメッセージ機能を実装していきます。 実装するメッセージ機能の仕様は以下のようにします。 ・特定のオブジェクトをクリックすると、それに応じて何かメッセージを表示 ・それ以外のオブジェクトをクリックすると、適当なメッセージを表示 ・メッセージは表示されて数秒経ったら、自動的に消える まず、「特定のオブジェクトをクリックすると、それに応じて何かメッセージを表示」 という機能に関して考えてみましょう。 ここでいう特別なオブジェクトとは、ベッドやスイッチのことを指します。 今まで行ってきたことは、「スイッチを押したらフラグを変える」といったものでしたが、 これに追加で「メッセージを表示する」という命令を書き加えれば解決できそうです。 では、「メッセージを表示するという命令」はどうやって書けばよいのでしょう? 私の場合は、以下のように機能を実装しています。 最初に、スプライト:message側に記述するプログラムを考えます。 まず、テキスト:text_messageを作成しスプライト:messageに追加します。 テキストを作成する際、変数名のところに忘れず「text_message」と入力してください。 また、「ラベル:message」を追加します。 そして、ラベル:messageの下に、 ・アクション:スクリプト:text_message = _root.message; ・アクション:何もしない(40フレーム) ・アクション:スクリプト:text_message = ""; と、3つ追加します。 最終的に、スプライト: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"); }