• ベストアンサー

ActionScript 3.0 について

最近Flash、ActionScript 3.0のゲーム制作に興味を持って、 自分でパズルゲームをつくってみたいと思いました。 表示されるパズルを押したら得点が追加される形式で、 Aを押したら2点、Bを押したら3点、Cを押したら4点、といったものです。 初めてでどこから手をつけていいのかわからないので、まずどのようなものを理解すればいいのか、どういった土台を作ればいいのか教えてください。

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

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

shidoro
質問者

お礼

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

関連するQ&A

専門家に質問してみよう