- ベストアンサー
adobe Flash CS5 ActionScript3 ボタンを押
adobe Flash CS5 ActionScript3 ボタンを押す度に、音の頭出し再生 AC3始めたばかりの初心者です。 「ボタンを押したらSE(音)がなる」FLASHをつくっているのですが、ボタンを連続で押すとSEが重なってしまいます。ボタンを押すごとに、SEの頭出しで再生させたいのですが、 どのようにすればよいのでしょうか? どなたかご教授頂けると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ボタン16個に同じスクリプトを書くのは非効率的ですが、 それは別問題なので無視します。 で、キーボードに対するスクリプトとボタンに対するスクリプトが 同じファイルまたは階層に記述されていると仮定すると、 ↓こんな感じでしょうか。 stage.addEventListener(KeyboardEvent.KEY_DOWN,dok); function dok(e:KeyboardEvent):void{ if (e.keyCode == 49){ if(mySoundChannel){ mySoundChannel.stop(); mySoundChannel = null; } mySoundChannel = mySound.play(); } ってか、ボタン用スクリプトを見ればだいたい分かると思いますが。。。 コピペで「出来た」とするのではなく、内容を理解するように意識してみると良いと思いますよ。
その他の回答 (1)
- BumeshiOK
- ベストアンサー率92% (12/13)
SoundDataというライブラリ内のデータを呼び出すと仮定して、 var mySound = new SoundData(); var mySoundChannel = new SoundChannel(); function playSound(e:MouseEvent):void{ if(mySoundChannel){ mySoundChannel.stop(); mySoundChannel = null; } mySoundChannel = mySound.play(); } BTN.addEventListener(MouseEvent.CLICK,playSound,false,0,true); こんな感じでしょうか。 結構ガッツリですが。 もし読み込み形式(Sound.load())で、ロード中(ストリーム中)であれば、 Sound.close() でロードをキャンセルできます。
お礼
BumeshiOK 様 早々の回答ありがとうございます。 おっしゃる通りやってみたら出来ました! ただ別の問題が発生してしまいました。私の説明不足だったのですが、 ボタンを押すと音が出て、尚且つキーボードを押しても音が出る(if文使用)ようにしていたのですが、if文がボタンとキーボードでそれぞれ出てきてしまい上手くいきません。 いろいろ試してはみたのですが、キーボードクリックで音(押すごとに頭出しされる)を出すやり方はあるのでしょうか? お手数ですが、ご教授いただけると大変助かります。 《現在ボタン》 var mySound = new SoundData(); var mySoundChannel = new SoundChannel(); function playSound(e:MouseEvent):void{ if(mySoundChannel){ mySoundChannel.stop(); mySoundChannel = null; } mySoundChannel = mySound.play(); } BTN.addEventListener(MouseEvent.CLICK,playSound,false,0,true); 《現在キーボード》 stage.addEventListener(KeyboardEvent.KEY_DOWN,dok); function dok(e:KeyboardEvent):void { if (e.keyCode == 49) { mySound.play(); ※ボタン計16個
お礼
BumeshiOK 様 ご返信ありがとうございます。 無事やりたい事ができました! if文は続けて書いてもよいのですね。まだまだ勉強不足でした… >コピペで「出来た」とするのではなく、内容を理解するように意識してみると良いと思いますよ。 確かにActionScriptの基礎ができてないまま作り始めていたので、これからは意味を理解しながら、やっていきたいと思います。 ご教授ありがとうございました!