脱出ゲーム作者のみなさん、
ゲットするアイテムにいちいち、同じ作業の命令を書き込んでませんか?
(私は、今まで、やってました。)
①ゲットしたというフラグを立てる。
②メイン画面から、ゲットしたアイテムを消す。
③アイテム選択画面に、ゲットしたアイテムを表示する。
④アイテム詳細画面を、呼び出す。
⑤「ゲットしたよ」というコメントを、呼び出す。
⑥音を鳴らす。
などなど、一連の作業命令全部を
ゲットするアイテムごとに、同じことをいちいち書くのは面倒じゃないですか?
コピペするにしても、アイテムの名前を書き替えなきゃいけない部分が複数あって
うっかりミスで
鉛筆をクリックしたはずなのに、隣の消しゴムが消えて、「ノートをゲットした!」などと表示される
・・・なんてヒドイことにまではならなくても、大変ですよね
これら全部が、一言で書けちゃうスクリプトがあるの、ご存知でした?
ご存知でしたら・・・
「今さら何を。馬鹿だなぁ」とスルーしちゃってください><
ご存知じゃなかったら・・・
おこがましいことですけれど、私がここで ご紹介しますので、是非これから使ってみてください!
まず、前提として・・・
rootには、次の4つの スプライト(parafla)/ムービークリップ(adobe Flashではそう言うのかな?)
が配置してあるとします。
(1)メイン画面用 --インスタンス名:main
(2)コメント画面用 --インスタンス名:comment
(3)アイテム選択画面用 --インスタンス名:item
(4)アイテム詳細画面用 --インスタンス名:about
それで、
①アイテム「鉛筆」をゲットしたというフラグは、_root.pencil = false;と表すことにします。
※ゲットしたらtrue、ゲットしていなかったらfalseとすると、
「ゲットするまで見える、ゲットしたら見えなくなる」という命令は
if(_root.pencil == false){
_visible = true;
}else{
_visible = false;
}
といっぱい書かなくてはならなくなりますが、
ゲットしたらfalse、ゲットしていなかったらtrueという風にしておくと
同じ命令が
_visible = _root.pencil;
とシンプルにできることになって、便利かと思います。
②③アイテム選択画面・メイン画面に置かれているアイテムのスプライト/ムービークリップの
インスタンス名もpencilにしておきます。
④アイテム詳細画面は、_root.about.gotoAndPlay("pencil");で呼び出せるようにしておきます。
(paraflaで言えば、ラベル名がpencilになっている状態。)
⑤コメントは、
_root.message = "鉛筆をゲットしたよ!";
_root.comment.gotoAndPlay("display");
のような形で命令されるよう設定しておきます。
さて、前提を確認したところで本題です。
まず、rootの一番最初に置くスクリプト
(皆さん、タブキー禁止の_focusrect = false;などを置いてらっしゃいませんか?
それと同じ場所に書いて大丈夫です。)
に、以下のことを書きます。(いっぱい書かなきゃいけないのはココだけです!)
function kakutoku (a,b) {
_root[a] = false; //① _rootと[a]の間にピリオド(?)は入りません。
_root.main[a]._visible = false; //②
_root.item[a]._visible = true; //③
_root.about.gotoAndPlay(a); //④
_root.message = b + "をゲットしたよ!"; //⑤
_root.comment.gotoAndPlay("display"); //⑤
_root.koukaon.attachSound("sound_item"); //⑥ 私はサウンドオブジェクト(parafla用語?)
_root.koukaon.start("sound_item"); //⑥ を使用しているのでこうなります。
}
そして、後は、鉛筆の絵のスクリプトに
on(release){
_root.kakutoku("pencil" , "鉛筆");
}
と書くだけ!
どのアイテムにも、これだけのシンプルなスクリプトで済むんです!!
もし、アイテム詳細画面(about)では
_root.about.gotoAndPlay("鉛筆");というように日本語を使いたい場合には
(パラフラで言えば、ラベル名に日本語を使いたい場合には)
function kakutoku (a,b) {
_root[a] = false; //① _rootと[a]の間にピリオド(?)は入りません。
_root.main[a]._visible = false; //②
_root.item[a]._visible = true; //③
_root.about.gotoAndPlay(b); //④
_root.message = b + "をゲットしたよ!"; //⑤
_root.comment.gotoAndPlay("display"); //⑤
_root.koukaon.attachSound("sound_item"); //⑥ 私はサウンドオブジェクト(parafla用語?)
_root.koukaon.start("sound_item"); //⑥ を使用しているのでこうなります。
}
とすればOKです
もし、コメントが「pencilをゲットしたよ!」とアルファベットでいいのであれば
function kakutoku (a) {
_root[a] = false; //① _rootと[a]の間にピリオド(?)は入りません。
_root.main[a]._visible = false; //②
_root.item[a]._visible = true; //③
_root.about.gotoAndPlay(a); //④
_root.message = a + "をゲットしたよ!"; //⑤
_root.comment.gotoAndPlay("display"); //⑤
_root.koukaon.attachSound("sound_item"); //⑥ 私はサウンドオブジェクト(parafla用語?)
_root.koukaon.start("sound_item"); //⑥ を使用しているのでこうなります。
}
と
on(release){
_root.kakutoku("pencil");
}
で済んじゃいます
これを使えば、itemの中のスプライト/ムービークリップに書くのは
onClipEvent(load){
this._visible = false;
}
だけでOK!全てのアイテムについて、同じになる(_root.pencilのような、個別のものを使わなくていい)
ので、ミスが減りますよね!
mainの中のスプライト/ムービークリップも、
onClipEvent(load){
this._visible = _root.pencil;
}
だけでOK!
-
onClipEvent(enterFrame){
this._visible = _root.pencil;
}
と、二つ書く必要はなくなります!
(アイテムをゲットした後には戻ってこない画面ならば、
onClipEvent(load)~すら書かなくていいですよね!)
ちなみに、_root.pencil、_root.pencil_got、_root.pencil_usedなど、使い分けたい場合は
_root[a] = false;
_root[a + "_got"] = true;
_root[a + "_used"] = false;
のようにすればOKです。
「同じことを何度も書く」というのは
・アイテムゲット
・アイテム使用(アイテム欄のアイテム画像が薄くなる・アイテム選択状態解除・使用したというフラグ立て)
・パスワード入力ボタン(パスワードの桁数分のボタンに、同じようなことを書く。)
などなど、結構あるかと思いますが、それら全てに、使えます!
便利でしょ?じゃないですか??
私みたいな、ウッカリ者には、大助かり!
よかったら、是非、皆さんも使ってみてください!!
こんなの常識・・・だったら、本当にすみません><
もし、ご指摘・ご質問などありましたらこちらへお願いします☆
「もっと便利なスクリプトがあるぞ~」という情報も大歓迎です!!
Create a free website at Webs.com