【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

flashのHPを作っております。
(mc)ボタンを配置しクリックすると画面の背景が変わる操作をしたいと思っており(top、new、main・・・など)
下記のHPのような
http://www.mediacreator.jp/tutorials/show_tutori …
操作ボタンを作っております。
上記HPは2.0で製作されているため、3.0に改変し、
アクションを下のようにしました。
var buttonNames= new Array("button1", "button2", "button3", "button4");
button1.buttonMode = true;
button2.buttonMode = true;
button3.buttonMode = true;
button4.buttonMode = true;

button1.addEventListener(MouseEvent.CLICK, button1click);
button2.addEventListener(MouseEvent.CLICK, button2click);
button3.addEventListener(MouseEvent.CLICK, button3click);
button4.addEventListener(MouseEvent.CLICK, button4click);

function resetButton(buttonName){
for(var i = 0; i < buttonNames.length; i++){
if(buttonNames[i] != buttonName){
this[buttonNames[i]].gotoAndStop(1);
this[buttonNames[i]].enabled = true;
}
}
}


function button1click(event:MouseEvent):void {
resetButton(button1);
this.gotoAndStop(2);
this.enabled = false;
}

function button2click(event:MouseEvent):void {
resetButton(button2);
this.gotoAndStop(2);
this.enabled = false;
}

function button3click(event:MouseEvent):void {
resetButton(button3);
this.gotoAndStop(2);
this.enabled = false;
}

function button4click(event:MouseEvent):void {
resetButton(button4);
this.gotoAndStop(2);
this.enabled = false;
}

コンパイルエラーは無くなったのですが、ボタン自体が動いてくれません。

どこが間違っているか分かる方、お教え下さい!

A 回答 (1件)

最小の変更で


こんな感じ↓にすれば良いのではないでしょうか?

===========================================
var buttonNames=new Array("button1","button2","button3","button4");

button1.buttonMode=true;
button2.buttonMode=true;
button3.buttonMode=true;
button4.buttonMode=true;

button1.addEventListener(MouseEvent.CLICK, buttonClick);
button2.addEventListener(MouseEvent.CLICK, buttonClick);
button3.addEventListener(MouseEvent.CLICK, buttonClick);
button4.addEventListener(MouseEvent.CLICK, buttonClick);

function resetButton() {
for (var i = 0; i < buttonNames.length; i++) {
this[buttonNames[i]].gotoAndStop(1);
this[buttonNames[i]].enabled=true;
}
}

function buttonClick(event:MouseEvent):void {
resetButton();
event.currentTarget.gotoAndStop(2);
event.currentTarget.enabled=false;
}
==================================================

でもこれだと配列を用意した意味がほとんどなくなります。
次のようにすれば,
ある程度は配列の意味が出てくるかもしれません(どっちにしてもあまり出ませんけど...)。

==================================================
var buttonNames=new Array("button1","button2","button3","button4");

for (var i:int = 0; i < buttonNames.length; i++) {
this[buttonNames[i]].buttonMode=true;
this[buttonNames[i]].addEventListener(MouseEvent.CLICK, buttonClick);
}

function resetButton() {
for (var i:int = 0; i < buttonNames.length; i++) {
this[buttonNames[i]].gotoAndStop(1);
this[buttonNames[i]].enabled=true;
}
}

function buttonClick(event:MouseEvent):void {
resetButton();
event.currentTarget.gotoAndStop(2);
event.currentTarget.enabled=false;
}
==================================================
 
「actionscript3.0でボタン操」の回答画像1
    • good
    • 0
この回答へのお礼

お返事遅くなって申し訳ありません!
配列を使ってボタンにアクションを付けていきたかったのですが、
教えて下さった内容がとてもヒントになりました!

ありがとうございました!

お礼日時:2010/03/25 08:03

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