みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ActionScript 3.0 について

最近Flash、ActionScript 3.0のゲーム制作に興味を持って、
自分でパズルゲームをつくってみたいと思いました。

表示されるパズルを押したら得点が追加される形式で、
Aを押したら2点、Bを押したら3点、Cを押したら4点、といったものです。

初めてでどこから手をつけていいのかわからないので、まずどのようなものを理解すればいいのか、どういった土台を作ればいいのか教えてください。

投稿日時 - 2014-09-06 22:24:58

QNo.8744906

暇なときに回答ください

質問者が選んだベストアンサー

Flash コンテンツ作成ソフトとしては
Adobe Flash CS3 以上を使用されているものとして
以下の回答をします。



簡単にするには
ステージ上に例えば「point_txt」というインスタンス名を付けた得点表示用のテキストフィールドと
例えば「A_mc」「A_mc」「A_mc」というインスタンス名を付けたパズルの各ピースに当たるMC(ムービークリップ)を用意します。

※参考【添付図】↓

そして
それらのインスタンスが存在するタイムラインのフレームに次のようなスクリプトを書きます。



//---------------------------------------------
//得点を代入する変数 point_num の初期化
var point_num:int = 0;

//point_txt に得点を表示
point_txt.text = point_num + "点";

//パズルの各ピースをキーとする Dictionary を作成
var piece_dic:Dictionary = new Dictionary();

//piece_dic の各キーに各ピースMCと各得点値を登録
piece_dic[A_mc] = 2;
piece_dic[B_mc] = 3;
piece_dic[C_mc] = 4;

//A_mc~C_mc を押した時に関数 addPoint を実行
A_mc.addEventListener(MouseEvent.MOUSE_DOWN,addPoint);
B_mc.addEventListener(MouseEvent.MOUSE_DOWN,addPoint);
C_mc.addEventListener(MouseEvent.MOUSE_DOWN,addPoint);

//関数 addPoint の定義
function addPoint(e:MouseEvent):void {
//変数 point_num に押されたMCの登録得点を加算
point_num += piece_dic[e.currentTarget];
//point_txt に得点を表示
point_txt.text = point_num + "点";
}
//---------------------------------------------



上記のような感じのものを変形&発展させて行けば
ご質問で書かれていらっしゃるようなものができると思います。



別に Dictionary クラスなど使わなくてもできますが
使わない場合は各ピース毎に違う得点を加算する関数を用意するとか
クロージャを登場させるとか手間が増えるので
Dictionary クラスを使って
1つの関数(イベントリスナー)を複数のピースで使い回す形にしています。

上で書いたようにピースが MC である場合は,
その中に勝手な変数を用意できるので
そこに各得点を代入して行っても良いです。
しかし
ピースがボタンインスタンスであった場合
その中に勝手な変数は用意できないので
汎用性を高める意味も含めて Dictionary クラスを使っています。



◎参考URL
「FlashゲームPG講座 For AS3.0【Dictionary クラスについて】」
http://hakuhin.jp/as3/dictionary.html

投稿日時 - 2014-09-08 23:08:25

お礼

回答ありがとうございます!
初歩からおしえていただいてすごく助かりました。
もっともっと勉強したいと思います!

投稿日時 - 2014-09-13 00:41:30

このQ&Aは役に立ちましたか?

15人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問