電子書籍の厳選無料作品が豊富!

FlashのActionScript3.0を使って、システムを構築中です。

ステージには下記の処理にて9個のボタンが配置されています。

var machiBtArr:Array = new Array();
for(var b:int=1; b<10; b++) {
var machiBt_str:String = "machi"+ b;
var machiBtClass:Class =Class(getDefinitionByName(machiBt_str));
var machiBt:MovieClip = new machiBtClass();
addChild(machiBt);
machiBtArr.push(machiBt);
}

ここまではうまくいったのですが、
たとえば、machiBtArr[3]のボタンがクリックされたら、
imgPhoArr[3]の画像を表示させる。。。という処理をしたいと思います。
※配列imgPhoArrには、あらかじめムービークリックを登録済みです。

ネットでいろいろ調べ、予め識別できるidなどプロパティを
追加しておけばいいらしいということを知り、
下記のようにコードを追加しました。

for(var i:int=0; i<machiBtArr.length; i++) {
// 識別id追加
machiBtArr[i]._id = i;
// マウスイベント登録
machiBtArr[i].addEventListener(MouseEvent.CLICK, machiClick);
}

function machiClick(e:MouseEvent):void {
imgPhoArr[i].visible = true;
}

ただ、この方法だと、どのボタンをクリックしても
必ずimgPhoArr[8]の画像が表示されてしまいます。

machiBtArr[0].addEventListener(MouseEvent.CLICK, machiClick00);
machiBtArr[1].addEventListener(MouseEvent.CLICK, machiClick01);…
と処理をひとつづつ記述していけばうまくゆくのですが、
それだとソースが膨大になってしまい、何とか短縮させたいと思っています。

ActionScript3.0に精通された、技術者の方々、
良い方法があればご伝授していただけないでしょうか?
どうぞ、よろしくお願いいたします。

A 回答 (2件)

こうします。



function machiClick(e:MouseEvent):void {
var i:int=e.target._id;
imgPhoArr[i].visible = true;
}

つまり「e.target」がイベントの発生したオブジェクトになります。
    • good
    • 0
この回答へのお礼

ありがとうございます!
おかげで難関を突破できました!!^^

お礼日時:2011/06/20 19:56

次のページ(2ページ)全体が参考になると思います。


(最初に広告が出て鬱陶しいですが...)

「ActionScript 3.0で始めるオブジェクト指向スクリプティング:第32回 Dictionaryクラスを使う|gihyo.jp … 技術評論社」
http://gihyo.jp/dev/serial/01/as3/0032
http://gihyo.jp/dev/serial/01/as3/0032?page=2
    • good
    • 0
この回答へのお礼

BlurFiltanさん、いつもお世話になっています。^^

役に立ちそうなページへのリンク、ありがとうございます。
このような記事を読むと、
「何をしたいのか」を頭の中で技術用語に
置き換える必要があるなとつくづく思う次第です。

日々の仕事に忙殺され、なかなか学ぶ機会を設けることも
できずにいますが、時間を見つけてスキルアップしていこうと思います。

お礼日時:2011/06/20 20:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!