トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     外部mp3のループ再生について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
cavalier
Åê¹ÆNo.2978
投稿日時: 2004-1-17 14:36
新米
居住地:
投稿: 5
使用環境:
FlashMX, Mac OS X
外部mp3のループ再生について
こちらには初めて投稿します。よろしくお願いします。
迷える子羊の部屋の外部mp3のループ再生は・・・から飛んできました

現在、ボタンクリックで外部mp3をロードし、offボタンをクリックするまで再生を繰り返すというswfを作りたいと思っています。

Fumioさんのアドバイスの元、シーンに配置した再生用ボタンに
on (release) {
	soundData = new Sound(test.mp3);
	suondData.onLoad = function(success) {
		if (success) {
			this.start();
		}
	};
	soundData.loadSound("test.mp3", false);
	this.gotoAndStop("song1");
}

と書いてみたものの、再生されませんでした。
意味が理解出来ていないので恐縮なんですが、おかしい所をアドバイス頂けると嬉しいです。
また、Fumioさんより

引用:
イベントサウンド(Sound.loadSound()メソッドの第2引数をfalse)にするか、サウンドの終了を判定してふたたび再生するスクリプトを記述する必要があります。


とアドバイス頂きました。この終了判定して再び再生というスクリプトについてもヒントを頂ければ幸いです。

on(release){
    soundData.stop();
       soundData.loadSound("○○.mp3",true);
     soundData.start(0,999)


こう書いた時は、ループ無しで再生はしました。(最後の行の第2引数ループオプションは使用出来ないと教わりました)
これに終了判定のスクリプトを加えるということでしょうか。

では、よろしくお願いします。
野中文雄
Åê¹ÆNo.2981
投稿日時: 2004-1-17 16:56
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 外部mp3のループ再生について
Soundオブジェクトを作成(new)したときのターゲットtest.mp3というインスタンスは、タイムラインに存在していますか? 以下の記述で元のスクリプト(文末の引用)と同じように(1回だけ)再生できないなら、ターゲットの指定が誤っていると思われます。
on (release) {
	soundData = new Sound(test.mp3);
	// soundData.loadSound("test.mp3", false);
	soundData.loadSound("test.mp3", true);  // ストリーミングに変更
	this.gotoAndStop("song1");
}

元のスクリプトから想像すると、Soundオブジェクトの作成(new Sound()の呼出し)は別途されているのではありませんか? それが正しく実行されていれば、重ねて作成する必要はありません。
引用:
cavalierさんは書きました:
Fumioさんのアドバイスの元、シーンに配置した再生用ボタンに
on (release) {
	soundData = new Sound(test.mp3);
	suondData.onLoad = function(success) {
		if (success) {
			this.start();
		}
	};
	soundData.loadSound("test.mp3", false);
	this.gotoAndStop("song1");
}

と書いてみたものの、再生されませんでした。
意味が理解出来ていないので恐縮なんですが、おかしい所をアドバイス頂けると嬉しいです。

問題は、ひとつずつ解決した方がよいと思います。ただ、考え方だけ申しますと、具体的には以下のスクリプトにSound.onSoundCompleteメソッドの処理を追加します。まずは、「ActionScript辞書」をご覧ください。

資料としては、残念ながら日本語のものは見当たりませんでした。

[Macromedia Flash Sample Files]
*MXのAudio: Load soundsというサンプルです(FLAファイルのダウンロードができます)。
[Looping dynamically loaded MP3s]
引用:
引用:
イベントサウンド(Sound.loadSound()メソッドの第2引数をfalse)にするか、サウンドの終了を判定してふたたび再生するスクリプトを記述する必要があります。

とアドバイス頂きました。この終了判定して再び再生というスクリプトについてもヒントを頂ければ幸いです。
on(release){
    soundData.stop();
       soundData.loadSound("○○.mp3",true);
     soundData.start(0,999)

こう書いた時は、ループ無しで再生はしました。(最後の行の第2引数ループオプションは使用出来ないと教わりました)
これに終了判定のスクリプトを加えるということでしょうか。


----------------
 

野中文雄
Åê¹ÆNo.2984
投稿日時: 2004-1-17 17:09
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 外部mp3のループ再生について
[ML-LOG]でいくつか過去ログが見つかったので、追加します。

[flash:27638] βでビットマップのピクセルずれ治る?
[flash:24735] <FlashMX>外部MP3ファイルがマックで再生されない
引用:
Fumioさんは書きました:
資料としては、残念ながら日本語のものは見当たりませんでした。


----------------
 

cavalier
Åê¹ÆNo.3024
投稿日時: 2004-1-20 11:20
新米
居住地:
投稿: 5
使用環境:
FlashMX, Mac OS X
Re: 外部mp3のループ再生について
遅くなりました。資料のリンクまでして頂いて、ありがとうございます

おっしゃる通りで、ターゲット指定の間違いでした
1回再生も出来ました!
また、Soundオブジェクトの作成(new Sound()の呼出し)も別でしてありました(^_^;

そこで、Sound.onSoundCompleteを追加して、各ボタンに
on (release) {
	my_Sound = stop();
	my_Sound.loadSound("folder/sound.mp3", false);
	my_Sound.onSoundComplete = function() {
		my_Sound.start();
	};
	my_Sound.start();
	this.gotoAndStop("disc1");
}

と書いてみた所、ムービープレビューではループ再生されるようになりました
ところが、書き出してブラウザで見てみると、曲が再生されません・・・。
リンクしていただいた
[flash:24735]<FlashMX>外部MP3ファイルがマックで再生されない

が関係あるのかと思ったんですが、Winユーザーに確認してもらったところ、そちらでも再生されないようです。
ちなみに、「1フレームおいた後だと、再生できます。」の意味がよく分かりません(汗

サーバに上げましたので、もし宜しければ、恐縮ですがチェック&ご指摘お願いします。何か根本的な間違いかもしれませんね・・・

cafebox
野中文雄
Åê¹ÆNo.3025
投稿日時: 2004-1-20 15:16
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 外部mp3のループ再生について
以下のスクリプトで、サウンドが再生できたことは、ある意味驚きです。スクリプトに、かなり混乱がみられます。
引用:
Fumioさんは書きました:
問題は、ひとつずつ解決した方がよいと思います。

と申し上げた所以です。
引用:
cavalierさんは書きました:
1回再生も出来ました!

外部MP3サウンドの再生には、ふたつのやり方があります。

[1]イベントサウンドとして再生(Sound.loadSound()メソッドの第2引数: false)
Sound.start()メソッドの第2引数で、ループオプションの指定が可能
・サウンドのロードが完了しないと再生できない(Sound.start()メソッドが空振りする)ので、Sound.onLoadメソッドの定義が必要

[2]ストリーミングサウンドとして再生(Sound.loadSound()メソッドの第2引数: true)
・ループ再生には、Sound.onSoundCompleteメソッドの定義が必要
・サウンドのロード待ちは不要で、自動的にストリーミング再生開始

以下のスクリプトは、イベントサウンドの指定でありながらSound.onSoundCompleteメソッドの定義がある点で、整合性のあるつくりになっていません。
引用:
そこで、Sound.onSoundCompleteを追加して、各ボタンに
on (release) {
	// Soundインスタンスに別の値を代入するとSoundオブジェクトが消滅します
	// 以下の場合に消滅しないのは特別なケースと考えられます
	// my_Sound = stop();
	my_Sound.stop();
	// ストリーミングサウンドなら第2引数はtrue
	// この実行はSound.onSoundCoumleteの定義後が確実
	// my_Sound.loadSound("folder/sound.mp3", false);
	my_Sound.onSoundComplete = function() {
		my_Sound.start();
	};
	my_Sound.loadSound("folder/sound.mp3", true);
	// ストリーミングサウンドは自動的に再生が開始します
	// my_Sound.start();
	this.gotoAndStop("disc1");
}

と書いてみた所、ムービープレビューではループ再生されるようになりました
ところが、書き出してブラウザで見てみると、曲が再生されません・・・。

Sound.start()メソッドの実行を、1フレーム待って行わなければ効果がないという趣旨のようです。しかし、前述のとおり、ストリーミングサウンドの開始には、このメソッドを実行する必要がありません。
引用:
ちなみに、「1フレームおいた後だと、再生できます。」の意味がよく分かりません(汗

MP3サウンドやSWF、HTMLドキュメントの階層構造がわからないので、下記のサンプルでは具体的な原因がわかりかねます。

まず、MP3サウンドファイルのパスは、HTMLドキュメントを起点とします(SWFからの相対パスではありません)。また、上記スクリプトのコメントに指摘したとおり、Sound.loadSound()メソッドの実行は、Sound.onSoundCompleteの定義後に行う方がよいでしょう。さらに、Sound.start()メソッドの呼出しは不要です。

ストリーミングサウンドのサンプルをアップしましたので、比較してみてください。
引用:
サーバに上げましたので、もし宜しければ、恐縮ですがチェック&ご指摘お願いします。何か根本的な間違いかもしれませんね・・・

cafebox


----------------
 

cavalier
Åê¹ÆNo.3347
投稿日時: 2004-1-31 2:11
新米
居住地:
投稿: 5
使用環境:
FlashMX, Mac OS X
Re: 外部mp3のループ再生について
遅くなりましたが、無事、ストリーミングで再生する事が出来ました!
Fumioさん、どうもありがとうございました。

引用:
まず、MP3サウンドファイルのパスは、HTMLドキュメントを起点とします(SWFからの相対パスではありません)。


この点で手こずりました(笑)。なるほど・・・といった感じです

今度はイベントサウンドでの再生に取りかかろうと思います。
最近、ADSLの乗り換えのために、久々のダイアルアップ接続を味わっているんですが、正直、Flashはあまり優しくありませんね・・・
ストリーミングサウンドも、ブチブチに途切れてしまいます。ブロードバンドの有難味を実感している次第です

では、今回は本当に有り難うございました。また疑問の際は投稿しますので、よろしくご教授ください
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops