• ベストアンサー

flash MX での mp3ファイルの途中再生と停止

mp3 ファイルの頭からの再生は、  bgSndObj = new Sound(this); bgSndObj.LoadSound("a.mp3",true); bgSndObj.Start(); で、停止は、  bgSndObj.Start(); ですが、 途中で停止、そこから再生するにはどうすればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

サウンドの演奏を始める Sound オブジェクトの start メソッドは、正式には引数を2つ渡す仕様になっています。第1引数がサウンドの何秒の位置から演奏を始めるか、第2引数が何回ループするかの指定です。引数は不要なら省略可能で、1つだけ指定した場合は演奏開始位置の指定と見なされます。 また、現在再生している位置をミリ秒で返す、 Sound.position というプロパティがあります。 この2つを利用して、次のように考えてはいかがでしょう。 変数を1つ用意します。 一時停止でサウンドを止める処理の時に、Sound.position で再生している位置を取得して、この値を変数に保存しておきます。 停止位置から再生する時は、変数に残した情報を元に、Sound.start の第1引数で演奏開始位置を指定します。 ただし、position の単位はミリ秒で、start の第1引数の単位は秒です。start に渡す時は、変数に保存してある値を 1000 で割って秒に直す必要があります。 例えば、一時停止の時の再生位置を保持する pause_point という変数を用意するとします。 一時停止の時は、  //現時点の再生位置を保存  pause_point = bgSndObj.position;  //サウンドを停止  bgSndObj.stop(); 停止したところから再生し始める場合は、  //停止位置から再生  bgSndObj.start( pause_point / 1000 );  //停止位置をリセット  pause_point = 0; ミリ秒と秒の違いのため、微妙に演奏開始位置がズレる場合もあります(あまり目立たない程度です)が、基本的には、こんな感じのスクリプトでできると思います。 なお、pause_point は必要に応じて0にリセットしてください。この値を元に演奏位置を指定しますから、位置が狂っていると変な位置から再生されてしまいます。 0にする目安は、停止した時・再生を再開した時・ループする場合はループの最初の時点などです。

WETCOLD
質問者

お礼

いつもありがとうございます。  演奏曲が複数あるときは曲単位で、終了時間を定義しておき、どの曲が演奏されているかを判定し、その曲が終了時間に達したときに 対応する  pause_point = 0; にすればいいわけですね。

関連するQ&A

  • actionscript2のmp3再生について

    as2でmp3の再生を行いたいのですが上手く動作しません。 以下、ソースになります。 ----------------------------------------------------------------------- FLASHファイルの1フレーム目 stop(); var soundUtil:common.SoundUtil = new common.SoundUtil(this); soundUtil.soundFile = ["snd1.mp3", "snd2.mp3", "snd3.mp3"]; soundUtil.startSound(); クラスファイル class common.SoundUtil{ public var soundCtl:Object; public var crrSoundNo:Number; public var soundFile:Array; public function SoundUtil(target:MovieClip) { this.soundCtl = new Sound(); this.soundCtl.attachSound("test1"); this.soundCtl.setVolume( 100 ); this.soundCtl.onLoad = loadComplete; this.soundCtl.onSoundComplete = endSound; this.crrSoundNo = 0; } // 音声スタート public function startSound():Void{ trace("startSound:::" + this.soundCtl); if (this.soundFile.length > 0){ // ※loadSoundを呼び出すとこのクラス情報が消失します this.soundCtl.loadSound(this.soundFile[this.crrSoundNo], false); } } // 音声ストップ public function stopSound():Void{ this.soundCtl.setVolume( 0 ); this.soundCtl.stop(); } // 次ファイル再生 public function nextSoundLoad():Void{ if (this.soundFile.length - 1 < this.crrSoundNo + 1){ stopSound(); }else{ this.crrSoundNo = this.crrSoundNo + 1; startSound(); } } // 音声再生終了 private function endSound():Void{ trace("endSound:::" + this.soundCtl); if (this.soundFile.length - 1 < this.crrSoundNo + 1){ stopSound(); }else{ nextSoundLoad(); } } // ファイルの読込終了 private function loadComplete(success):Void{ // ※↓this.soundCtlがundefined trace("loadComplete:::" + this.soundCtl); if (success == true) { // ※↓以下通過しています trace("success:::"); this.soundCtl.start(); } } } ----------------------------------------------------------------------- 出力ログ startSound:::[object Object] loadComplete:::undefined success::: ----------------------------------------------------------------------- ファイルの読込み完了時点でSoundオブジェクトがundefinedになってしまいます。 動作としましては、ファイルの読込みが完了し、loadCompleteが呼ばれ、読み込んだmp3ファイルを再生し、再生終了時点でendSoundが呼ばれ、次の音声ファイルを読み込み。。。という流れを望んでいるのですがloadComplete以降Soundオブジェクトがundefinedになってしまう為上手く動作しません。 有識者の方、ご回答頂けますと幸いです。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • flashの音再生について

    main.swfにactionscript2.0で音のon/offしているのですが、 offになって欲しくない音までoffになってしまいます。 スクリプトで呼び出している音ならばまだわかるのですが、 flvで外部から読み込み再生しているファイルなので、 訳が分からず困っています。 ちなみに音再生スクリプトはフレーム上に以下 //BGM制御用のダミーのムービークリップを作る this.createEmptyMovieClip( "bgm_clip" , 0 ); //BGMの設定 sndbgm = new Sound( bgm_clip ); sndbgm.attachSound( "BGM01" ); sndbgm.setVolume( 100 ); sndbgm.onSoundComplete = function() { //無限ループ再生 sndbgm.start(); }; //BGMを再生 sndbgm.start(); //BGMのボリュームとフェードの速さを管理する変数 bgm_vol = 100; fade_spd = 5; //SE設定 allse = new Sound(); allse.setVolume( 100 ); S1 = new Sound(this); S1.attachSound("SE01"); S2 = new Sound(this); S2.attachSound("SE02"); S3 = new Sound(this); S3.attachSound("SE03"); on/offにはMCで以下の様にしています。 on (release) { if (this._parent.sndbgm.getVolume()>0) { this._parent.sndbgm.setVolume(0); this._parent.allse.setVolume(0); this._parent.v_on_off.gotoAndStop("soundOFF"); } else if (this._parent.sndbgm.getVolume()<=0) { this._parent.sndbgm.setVolume(100); this._parent.allse.setVolume(100); this._parent.v_on_off.gotoAndStop("soundON"); } } SE再生にはフレーム上に S1.start(); と入れています。 使用バージョンはCS4になります。 どなたか判る方、教えて下さい。

    • ベストアンサー
    • Flash
  • 外部mp3をストリーミング再生させる記述

    以前にも似たような質問をさせて頂きましたが、どうも上手くいかないので再度質問させて頂きます。 ストリーミングを表示するプログレスバーと クリックしたらmp3が再生するようにしたいのですが、 下記の構造と記述では上手く行きません、サーバーに上げないと 駄目なのでしょうか? 構造 Progressバー⇒MC ボタン⇒MC 同一のステージ上に配置してあります。 ボタンMCに下記の記述をしました on(press){ mySound="フォルダ名/データ名.mp3" mySound.loadSound(フォルダ名/データ名.mp3 + ".mp3",true); mySound.start(); mySound.myBar.x_scale = (getBytesLoaded ()/getBytesTotal ())*100; } *myBarがプログレスMCにつけたインスタンス名です。 タイムラインの記述は1フレームめに mySound = new Sound(); と、しました。

    • ベストアンサー
    • Flash
  • mp3ファイルが途中で再生されなくなった

    前作っていた曲をMP3で保存して、 最近パソコンを買い替えて、新しいパソコンへMP3を移動したんですが、 最初聞けていたのに、いつのまにか曲を全部聞けなくなっていました。 3分ある曲が2分で終わるというように、途中で再生されなくなってしまいました。 何が原因なのでしょうか。

  • FLASH MX で「繰り返しのスクリプト」を教えてください。

    タイムラインに配置されていないサウンドを、スクリプトを使って鳴らそうと思い、スクリプトをPLAYボタンに設定しました。 on (press) { rootSound = new Sound(_root); rootSound.attachSound("xxx.mp3"); rootSound.start(); } これでボタンを押すと鳴るようにはなりましたが この「xxx.mp3」は短いので繰り返して鳴らす場合は どのようにスクリプトを付け加えたらいいのでしょうか?(たとえば、100回繰り返す) 教えてください。 よろしくお願いします。

  • 外部mp3のランダム再生について

    初めまして。 AS3.0をまだ勉強中で見よう見まねで作っている状態ですが、 なんとか完成させたいのでご教授ください。 ■目標 ボタンをクリックすると外部mp3が再生。 ただし、音声は複数ありクリックする度にランダムでmp3を再生するようにしたいです。 ■現状 現状はランダムに読み込んでクリックすると再生まではできたのですが、 何度クリックしても最初に読み込んだ同じ音声しか再生されません。 ひたすら繰り返しにすればよいのかと思い、2フレーム目を用意したところ、 ランダム再生にはなったのですが、何もしていない状態でもひたすら読み込みを続けてしまい理想の動きではありませんでした。クリックする度にランダムで読み込めればと思いますが、 どのように書けば良いのかわかりません、よろしくお願いします。 ・ボタンインスタンス名 play_btn ・ファイル mp3/sound0.mp3 mp3/sound1.mp3 mp3/sound2.mp3 ・環境 windows7 FlashCS5 ActionScript3.0 ************ソース*************** import flash.net.URLLoader; var rand_num:int = Math.floor(Math.random() * 2); var name_str:String = "mp3/sound" + rand_num + ".mp3"; var mp3_url:URLRequest = new URLRequest(name_str); var sndCh:SoundChannel; var snd:Sound = new Sound(); snd.load(new URLRequest(name_str)); play_btn.addEventListener(MouseEvent.CLICK, xPlayClick); function xPlayClick(evt:MouseEvent):void { sndCh = snd.play(0, 1); } *************END*************** よろしくお願いします。

    • ベストアンサー
    • Flash
  • wmvファイル再生が途中で停止されてしまう

    1ファイル1GB弱程度のwmv動画ファイルを、別のドライブからコピーして、USB経由のリムーバブルHDDで再生すると、途中までは再生されますが、ある時点で以下のメッセージとともに停止してしまいます。 1)まず、「ファイルの再生中に Windows Media Player に問題が発生しました」 で、閉じるとWebヘルプしか選べない。 2)閉じるをすると、「wmpshare.exe ドライブにディスクがありません。ディスクをドライブ \Device\Harddisk\DR6 に挿入してください」 と出て、キャンセル、再試行、続行が選べる。キャンセルしか聞かず、押すとそれで終了。  10個くらい別のwmvファイルがあり、1-2個は問題なく最後まで再生できるのですが。。。残りはまったく同じ症状です。 Windows Media Playerのバージョンは、12.0.7601.17514、OSはWindows7 Professional 64bitです。   ファイルが壊れているのでしょうか。 再生できるようにファイルを修復する方法をご教示いただけると幸いです。

  • 停止した場所から再生するmp3プレーヤー

    携帯のmp3 プレーヤーについて全然知らないのですが、おすすめがあったら教えて下さい。 90分くらいのラジオ番組をパソコンで録音した mp3 ファイルがあります。一回では聞けないので何回かに分けて聞こうと思っています。 前回、携帯のmp3プレーヤーは、停止ボタンを押した場所から、再生が出来るものでしょうか?もしおすすめのがあったら教えて下さい。

  • 一時停止→再開するサウンドコントロールを作成したい

    独自で作成した画像+ナレーション(***.mp3)が含まれているswfファイルを 他のflaファイルに(loadmovieで)取り込み、 再生、一時停止等の制御ボタンで設定しようと考えています。 画像は停止、再生できたんですが、ナレーション(音声)が一時停止したところから再開されません。ちなみにナレーションが含まれているswfはloadSoundで取り込みました。 読み込む側のflaのほうのサウンドコントロールには現在、下記のような記述をしてあります。 ●一時停止ボタンには on(release){ _root.mc1.stop(); stopAllSounds(); } ●再生ボタンには on (release) { _root.mc1.play(); _root.Sound.start(); } どなたか、ご教示願います。

    • ベストアンサー
    • Flash
  • mp3のファイルが再生できません。

    mp3ファイルをWindowsMediaPlayer10で 再生しようとしたのですが、エラーが出てしまい 再生が出来ません。 エラーの内容は、 「ファイルを再生できません。プレーヤーがそのファイルの種類をサポートしていないか、そのファイルの圧縮に使用したコーデックをサポートしていない可能性があります。」 と出てきます。 「極窓」で拡張子の確認をしたのですが、「mp3」になっていました。 ちなみにみ「極窓」では普通に再生できました。 「REALPlayer」でも再生できませんでした。 ほかのmp3ファイルは全く問題なく再生できます。 何が問題なのかわからないので是非教えてください。 使ってるパソコンはWindowsXPです。 宜しく御願いします。

専門家に質問してみよう