- ベストアンサー
actionscript3.0のゲーム作成方法
- actionscript3.0を使ってゲームを作成する方法についてまとめます。
- addChildを使ってインスタンスにmouseClickのイベントを付ける方法について説明します。
- ka_doというインスタンスを連番で追加し、それぞれのインスタンスにイベントを付ける方法について考えます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
for (var i:int=0; i<9; i++) ↑これは 0~8 で getChildByName("ka_do○") ↑この○は 0~3 で ka[●] ↑この●」は 0~4 で という具合に数が全然合っていません。 また //マイナス3 とか //マイナス2 とか //マイナス1 これらの意味がさっぱりわかりませんが。。。 つまり規則性が見いだせません。 また「ka_do」 とは ムービークリップ なのか ボタン なのか スプライト なのか その他全く別のものかもわかりません。 何だか良くわかりませんが 次のような感じで良いのでしょうか? 仮にライブラリの中には ka_doClass というクラス名を付けたムービークリップを用意したものとします。 その場合のスクリプト例(全文)↓ //------------------------------------ //↓適当な付け足し↓ var ka:Array=new Array(9); //↑適当な付け足し↑ for (var i:int=0; i<9; i++) { //↓適当な付け足し↓ var ka_do = new ka_doClass(); ka_do.x=i*50; //↑適当な付け足し↑ ka_do.name="ka_do"+i;//連番名にする addChild(ka_do); getChildByName("ka_do"+i).addEventListener(MouseEvent.CLICK, K_m); } function K_m(e:MouseEvent):void { ka[Number(e.currentTarget.name.substr(5))]=1; //↓適当な付け足し↓ trace("出力テスト…" + ka); //↑適当な付け足し↑ } //------------------------------------ ※ なお インスタンス名などを使わずに Dictionaryクラス や 関数クロージャ などを使った方が もっと汎用的なものが作れると思います。 「第32回 Dictionaryクラスを使う」 http://gihyo.jp/dev/serial/01/as3/0032
お礼
返信ありがとうございます。 意味の分からない質問に答えて頂いて助かりました。 このプログラムで解決できました。 Dictionaryクラスの部分は読んだのですが使い道がよくわからず使用しませんでした。
補足
スクリプトをそのままコピー、訂正したので間違いがかなりあり変な感じになってしまいました。 var ka :Array=[0,0,0,0]; var ka_do:MovieClip=new ka_do_aka(); for (var i:int=0; i<3; i++) { ka_do.name = "ka_do" + i;//連番名にする addChild (ka_do); } function aaa ():void { getChildByName("ka_do0").addEventListener (MouseEvent.CLICK, a); getChildByName("ka_do1").addEventListener (MouseEvent.CLICK, b); getChildByName("ka_do2").addEventListener (MouseEvent.CLICK, c); getChildByName("ka_do3").addEventListener (MouseEvent.CLICK, d); } function a (e:MouseEvent):void { ka[0] = 1; } function b (e:MouseEvent):void { ka[1] = 1; } function c (e:MouseEvent):void { ka[2] = 1; } function d (e:MouseEvent):void { ka[3] = 1; } すいません。こちらのスクリプトでお願いします。