![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_15.png?8acaa2e)
play_btnとstop_btnの二つのボタンを作り、
それぞれ再生と停止ができるようにしました。
再生繰り返し回数は1回です。
そこで、play_btnをクリックし再生します。
再生が終わってから、再びplay_btnをクリックしても再生しません。
play_btnをクリックし再生してから、
stop_btnをクリックし停止させ、
再度play_btnをクリックすると再生します。
連続してplay_btnをクリックしたときには、
再生中の場合は再生を停止し新たに再生させるようにしないといけないんだろうなとおもうのですが、、。
どうスクリプトを記述すれば良いかよく分からないので、
どなたか教えていただければ幸いです。
var soundCh:SoundChannel;
var snd:Sound = new BGM();
play_btn.addEventListener(MouseEvent.CLICK, PlayClick);
stop_btn.addEventListener(MouseEvent.CLICK, StopClick);
//イベントハンドラ定義
function PlayClick(evt:MouseEvent):void {
if (soundCh == null){
soundCh = snd.play(0,1);
}
}
function StopClick(evt:MouseEvent):void {
if (soundCh != null){
soundCh.stop();
soundCh = null;
}
}
No.1ベストアンサー
- 回答日時:
ご提示のスクリプトですと、「停止」ボタン操作で停止した場合は、StopClick 関数内で「変数 soundCh の値を null にする」処理が行われます。
ですから、その後で再度「再生」ボタンをクリックすると、PlayClick 関数内の if 文の条件である「 soundCh の値が null の時」が成立して、サウンドが再生されます。
しかし、曲の最後に達して再生が終了した場合は、soundCh には再生に使用されたチャンネルを操作するための情報が入っています。
この状態で「再生」ボタンをクリックしても、soundCh の値が null ではないために PlayClick 関数内の if 文の条件が成立せず、再生されないのですが、「停止」ボタンをクリックすると soundCh が null に書き換えられて再生できるようになる、というわけです。
最後まで再生された後も再生できるようにするには、曲の最後に達した時にも soundCh の値を null に戻す処理が必要です。
曲の最後に達したかどうかは、SOUND_COMPLETE というイベントを使って検出できます。
soundCh の値を操作して再生中かどうかを判断することも可能ではあるのですが、稼働しているオブジェクトの参照を持っている soundCh の値を null に書き換えてしまうのは、少々乱暴だと思います。
代わりに、再生中かどうかの情報を持つ変数を作り、こちらで判断してはいかがでしょう。
次のように考えます。
再生しているかどうかの情報を管理する変数を1つ、用意します。ここでは仮に、play_flg という名前だとします。
この変数の値を、再生している時 true 、それ以外の時は false と決めます。今回は扱いたい情報が2種類しかないので、Boolean というデータ型にします。
「再生」ボタンがクリックされた時は、この変数の値を見て、false の時だけ再生します。
再生した場合は、再生中の印として true を入れます。すると、再生中に連続してクリックされても再生の条件が不成立になり、重複再生を防ぐことができます。
「停止」ボタンをクリックした時と曲の最後に達した時は、false に書き換えます。
スクリプトの一例です。
ライブラリにリンケージでクラス名”BGM”を設定したサウンドシンボル、ステージにインスタンス名”play_btn”と”stop_btn”と付けたインスタンスがあるものとします。
(↓ 各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください)
//***
import flash.media.*;
//再生状況を保持するフラグ
//再生時true、それ以外はfalse
var play_flg:Boolean = false;
//チャンネルとSoundオブジェクトの作成
var soundCh:SoundChannel;
var snd:BGM = new BGM();
//「再生」ボタンによる再生処理
function PlayClick( evt:MouseEvent ):void
{
//停止している場合のみ、再生する
if( play_flg == false )
{
//サウンドを再生
soundCh = snd.play( 0 , 1 );
//再生が終了した時のイベント処理を登録
soundCh.addEventListener( Event.SOUND_COMPLETE , PlayEnd );
//再生中であることを記録する
play_flg = true;
}
}
//「停止」ボタンによる停止処理
function StopClick( evt:MouseEvent ):void
{
//再生中であれば停止する
if( play_flg == true )
{
//サウンドを停止
soundCh.stop();
//再生終了時のイベント処理を削除しておく
soundCh.removeEventListener( Event.SOUND_COMPLETE , PlayEnd );
//停止したことを記録する
play_flg = false;
}
}
//再生が終了した時の処理
function PlayEnd( evt:Event ):void
{
//フラグをリセット
play_flg = false;
}
//各ボタンのイベント処理を登録
play_btn.addEventListener( MouseEvent.CLICK , PlayClick );
stop_btn.addEventListener( MouseEvent.CLICK , StopClick );
//***
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) uwscのCHKING関数の画像の認識がうまくいかない。 1 2022/06/18 20:55
- JavaScript 指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードを教えてください 2 2023/04/27 17:58
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- タブレット タブレットでApple Musicをスピーカーで聴いていますが「Wi-Fiが弱いせいか途中で切れるこ 3 2023/06/14 16:02
- その他(動画サービス) Tver アンケートに回答しても視聴できない(何度もアンケート画面が開く) 1 2023/01/13 21:47
- Windows 8 動画の再生とタイトルの変更方法を教えてください。 3 2022/08/01 14:51
- その他(ソフトウェア) DVD-VRをPCで再生したいのですが 3 2022/06/25 11:19
- iPhone(アイフォーン) iPhoneのショートカット作成について 1 2022/06/01 17:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Gifアニメの再生について(検索...
-
フラッシュで逆再生中の停止に...
-
phpで音を鳴らす
-
ムービー再生ボタンをクリック...
-
C言語 バッファについて。
-
フレーム内に移動したい
-
格闘ゲームのコマンド→↓→のプロ...
-
フレーム内のオプションボタン...
-
擬似フレームとPHP
-
Flashで右クリックメニューにつ...
-
左フレームの選択結果を右フレ...
-
FLASHでシーンをつなげる。
-
C#でDLLファイル読み込みを行う...
-
プルダウンメニューの件で、至...
-
getURLのurl記述部分を外部...
-
Actionscriptでのフレーム間の移動
-
ASではどうやって記述するのか
-
2倍速を等速動画に(車載動画)
-
メガネ ウェリントン どこの国...
-
ある地域の天気が無料で取得で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpで音を鳴らす
-
vbscriptでウィンドウズメディ...
-
yahooで画像検索すると
-
WindowsMediaVideoをインライン...
-
音声データを再生するボタン
-
エクセルで通知音
-
音声制御に関して
-
フラッシュで逆再生中の停止に...
-
Action Script3.0で曲の再生と停止
-
Flash swfのランダム再生
-
PHPで、キャラクター画像とセリ...
-
AVIファイルを読み込む方法
-
Gifアニメの再生について(検索...
-
Flashゲームのセーブ機能の作り方
-
サウンドのフェードイン・アウト
-
外部mp3のランダム再生について
-
【jquery】自動再生するスライ...
-
巻き戻しボタンを作りたいので...
-
ボタンによるflash動画制御方法...
-
2回目の観覧時に最終フレームを...
おすすめ情報