脱出温泉2メイキング⑥~ActionScriptでクラス


さて、メイキングシリーズを1ヶ月くらい放置してました。ゴメンナサイ(´・ω・`)
たまにツイッターとかで「メイキング楽しく読んでます」というリプいただいてとても嬉しいです(´;ω;`)
いよいよFlashでの構築に入ります。
使用するのはもちろんAdobe Flash CS5!
今回は「…なんて高価なソフトはやっぱり持ってないので」じゃないです。実は持ってます。
が、Adobe FlashはInkscapeで作ったsvgファイルが読み込めない!
なのでフリーソフトの「Suzuka」を使います。
※ごちゅうい※
・これからActionScriptの解説を書きますが、私はActionScriptがそんなに得意ではありません…。きっともっと他にいい方法があると思います(´・ω・`)
・スクリプトはすべてフレーム上に書きます。

とりあえず前回までに作ったステージの画像やアイテムの画像などを読み込み、スプライト(MC、ムービークリップとも)に入れます。
閃光絵巻(ブログ)~Flashアニメ・ゲーム製作記
↑ひとつひとつがアイテムのサムネ(アイコン)MCです。
ステージはラベルを使って「f1011」「f1021」のように1シーンごとに番号を振ります(ラベル名の頭文字が数字だとエラーになるので「f」を付けています)。

閃光絵巻(ブログ)~Flashアニメ・ゲーム製作記

続いてアイテムのゲットの仕方など。
ちょっと難しいのですが、クラスに挑戦しました!
今回が「Item」「Gimic」「Garelly」の3つのクラスを作りました。
閃光絵巻(ブログ)~Flashアニメ・ゲーム製作記
まず、Itemクラスには以下のスクリプトを書きました。
-----—-
var state; //取得状況。undefined / "got" / "used" の3種類
var id; //アイテムの通し番号。
var water; //洗面器のお湯など。"kakeyu"、"rotenM"などが入る。
function get(a){ //アイテムをゲットする度に実行する
_global.se_confirm.start(); //効果音を鳴らす。
_root.selected=_root.itemArray[this.id]; //ゲットしたアイテムを選択状態にする
_root.itemList["i"+this.id]._visible=true; //アイテムリストのアイコンを可視化
_root.itemList["i"+this.id].gotoAndStop(3); //アイテムリストのアイコンMCを詳細画面オープンのコマ(3フレーム目)にする
_root.itemWindow.gotoAndStop(this.id); //アイテム詳細ウィンドウもオープンする
this.state="got"; //stateを「ゲットしたが未使用」に
_root.itemWindow.newItem.nextFrame(); //NEW ITEM!!を表示する
_root.mes.note.text=a; //セリフを引数と同じにする。
}
function use(a){ //アイテムを使う度に実行する
_global.se_confirm.start(); //効果音(ry
_root.selected=undefined; //アイテムを何も選択してない状態にする
_root.itemList["i"+this.id].gotoAndStop(4); //アイテムのアイコンMCを使用済みのコマ(4フレーム目)にする
this.state="used"; //stateを「ゲットしていて、しかも使用済み」に
_root.mes.note.text=a; //セリフを(ry
}
-----—-
これを応用すればギミックなども簡単に管理できます。
そしてここから使い方。
まずメインタイムラインですべてのアイテムをクラス化します。
-----—-
var stone = new Item;
stone.id = 2;
var nozzle = new Item;
nozzle.id = 3;
var senmenki = new Item;
senmenki.id = 4;



-----—-
といった風にネ。
例えば最初に見えるアイテム「手桶」をゲットするとき。
女湯のMCのタイムラインフレームに以下のように書きます。
-----—-
hit1.onRelease=function(){ //「hit1」というボタンをクリックしたとき
_root.teoke.get("手桶だ。とりあえず取っとこ。"); //Itemクラスの「teoke」をゲット。()内はセリフ。
gotoAndStop("f2110"); //女湯ステージは手桶のないシーンに移動する。
};
-----—-
クラス化するとteokeというインスタンスに直接getというオリジナルのメソッドが使えて便利です( ^ω^)
ちなみに前作「脱出温泉1」では
-----—-
getteoke = true;
useteoke = false;
-----—-
のように管理していましたが、ちょっとややこしくて覚えにくかったですね。
名前をダブルクリックすると「get」と「teoke」の両方が選ばさっちゃうし。
果たしてこんな説明で通じるだろーか…?