プロが教えるわが家の防犯対策術!

サウンドが鳴っている状態で始まり、それをON/OFFボタンで制御したいのですが、参考書やネットに載っているものを参考に作ろうとしているのですが、どうしてもできません。

サウンドなしの状態で始まり、それをON/OFFボタンで制御するものは、http://oshiete1.goo.ne.jp/qa2790650.html にある、serial74さんの回答を使わせていただきました。
これを応用すればきっとできるのだと思いますが、参考書を一通り終えた初心者で、いろいろと変えてみたのですがわかりません。

どなたか教えていただけると大変助かります。

以下、“FLASHでサウンドのON/OFFボタンでBGMの再生を制御したい”の質問へのserial74さんの回答です。

引用はじめ--------

may_07さんの求めていらっしゃるレベルが分からないので細かく書いていますが「こんなの知ってるよ」と気を悪くなさらないでくださいね。
▼コレをボタンにしたいムービークリップに書いてみてください。
*************************
onClipEvent(load){
Oto=new Sound(); //サウンド用空オブジェクトOtoを作る
Oto.attachSound("xxxxxx"); //Otoにサウンドを割り当てる
SoundFlag=false; //音の状態フラグをfalse=鳴っていないにしておく
}

onClipEvent(enterFrame){
this.onPress=function(){ //コレをクリックしたとき
if(SoundFlag==true){ //音が鳴っていたら
Oto.stop(); //音を止める
SoundFlag=false; //音の状態フラグを切り替える
}
else{ //音が鳴っていなかったら
Oto.start(0,999); //音をループ再生
SoundFlag=true; //音の状態フラグを切り替える
}
}
}
*************************
●すでに音の読み込みができている状態でしたらonClipEvent(load){}内はムシしてください。
●「Oto」「SoundFlag」は変数なので自分のわかりやすい名前にしてください。
●「xxxxxx」はライブラリを開く→読み込んだサウンドを選択→ライブラリのメニュー→リンケージ→識別子でつけた名前です。

●サウンドをスクリプトで扱うときは、サウンド自体に名前(識別子)をつけて、さらにサウンドオブジェクトにしてあげて(よく「関連づける」と言われます)、サウンド

オブジェクトの設定をいじる、といった流れです。

引用おわり--------


serial74さんの回答のとおりに私が作ると、ボタンを押しても1回目は反応がなく2回目にサウンドONになります。(ブラウザを通した場合)
ブラウザを通さずswfそのものでは、ボタンを押すと1回目でONになります。
きっと基本的なところでつまずいているのだと思いますが、原因がわかりません。こちらについても原因がお分かりの方がいらっしゃったらご教示ください。

どうぞよろしくお願いします。

A 回答 (1件)

1つ1つ注釈行が入っているのですから,


日本語くらいは理解して使うようにしましょう。

//音の状態フラグをfalse=鳴っていないにしておく
SoundFlag=false;

  ↓変更↓

//音の状態フラグをfalse=鳴ってるにしておく
SoundFlag = true;
//音をループ再生
Oto.start(0, 999);

とするだけでできませんか?



======================

しかし,
ご質問されて良かったような気もします。
引用されているスクリプトは,

 onClipEvent(enterFrame){
 }

の使い方が間違っています。
次のように変更した方が良いです。
スクリプトも簡単になる上,無駄な(無意味な) CPU を使い続けずにすみます。

------------------------------------
onClipEvent (load) {
//サウンド用空オブジェクトOtoを作る
Oto = new Sound();
//Otoにサウンドを割り当てる
Oto.attachSound("xxxxxx");
//音の状態フラグをfalse=鳴っていないにしておく
SoundFlag = true;
//音をループ再生
Oto.start(0, 999);
}
on (press) {
//コレをクリックしたとき
if (SoundFlag == true) {
//音が鳴っていたら
Oto.stop();
//音を止める
SoundFlag = false;
//音の状態フラグを切り替える
} else {
//音が鳴っていなかったら
//音をループ再生
Oto.start(0, 999);
//音の状態フラグを切り替える
SoundFlag = true;
}
}
------------------------------------



======================


> serial74さんの回答のとおりに私が作ると、
> ボタンを押しても1回目は反応がなく2回目
> にサウンドONになります。(ブラウザを通した場合)
> ブラウザを通さずswfそのものでは、
> ボタンを押すと1回目でONになります。

よくわかりませんが,これは,
音のあるなしの問題ではなくて,
単に IE の仕様上の問題ではないでしょうか?


最近私が回答したものの1つですが↓。
http://oshiete1.goo.ne.jp/qa2918593.html

その他
http://oshiete.goo.ne.jp/search/search.php?statu …

それ以外の原因はわかりません。
    • good
    • 0
この回答へのお礼

できました!

//音の状態フラグをfalse=鳴ってるにしておく
SoundFlag = true;
これは試したのですが、下記を入れていませんでした。
//音をループ再生
Oto.start(0, 999);
これからひとつひとつ勉強していこうと思います。

はじめにボタンを2回押さないと反応しないのも、
IE の仕様上の問題だろうということもわかりました。
今度はそちらの方を、いただいたURLを参考に試して
みたいと思います。

sassakunさん、どうもありがとうございました。

お礼日時:2007/04/30 22:17

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