2008-09-20 15 views
3

私は、SWFにたくさんの外部音を含むプロジェクトを持っています。私はそれらを再生したいが、サウンドオブジェクトに新しいURLをロードしようとすると、 "Error#2068:Invalid Sound"で失敗するか、 "Error#2032 Stream Error"でioErrorが発生する。Actionscript 3でSWFと同じディレクトリにないサウンドを再生する方法は?

//で始まるパスをしようとしました "のhttp:// .." "ファイル:// .." "// .." と」.. ")

VARパス:文字列=" http://../assets/the_song.mp3 ";

var url:URLRequest = new URLRequest(path);

var sound:Sound = new Sound();

sound.addEventListener(IOErrorEvent.IO_ERROR、ioErrorHandler);

sound.addEventListener(SecurityErrorEvent.SECURITY_ERROR、secHandler);

sound.load(url);

答えて

2

まあ、私はディレクトリ内のmp3を置くことによってテストをやったsoundTest/swfs/soundTest.swfを、私はvar path:String = "../assets/song.mp3";を使用する場合、それはエラーなしでコンパイルされます。

実際のディレクトリ構造は何ですか?

+0

コンパイル時にエラーが発生することはありませんが、次のいずれかを試してみると、ランタイムエラーが発生し、サウンドが再生されません。 path = "http://../assets /the_song.mp3 "// ioErrorEvent、エラー#2032ストリームエラー パス=" ../assets/the_song.mp3 "//エラー#2068:無効なサウンド – tronster

+0

これらは2つのサンプルです。コメントに。ちょうど私が実行時エラーではなく、コンパイル時エラーを受けていることを強調したいと思います。 – tronster

+0

ええと、私もランタイムエラーを取得していません。私のサンプルコードとあなたのコードとの唯一の違いは、IOエラーやセキュリティエラーをリッスンしていないことです。それらを取り除いたもので試してみることができますか? – defmeta

2

あなたは完全なURLを置くつもりだ場合を除き、HTTPを使用しないでください://やfile://

サウンドは、完全または相対URLからmp3ファイルをロードすることができます。あなたはあなたのURLが正しいと正当であることを確認する必要があります。

たとえば、ファイルのフルパスがhttp://www.something.com/assets/the_song.mp3の場合、パスは "/assets/the_song.mp3"になります。 soundTest/assets/song.mp3は、別のディレクトリにmp3を呼び出すswfファイルを作成:

+0

申し訳ありません申し訳ありませんが、上の例ではわかりませんでした。私がpath = "../assets/the_song.mp3"というあなたの提案を試みると、 "Error#2068:Invalid Sound"というエラーが表示されます。 (私はまた、 "/../assets/the_song.mp3"を試したところ、同じエラーが発生しました。) – tronster

2

FireFox用のhttpfoxをダウンロードしてください。このSNIFFERを使用すると、ブラウザーを介してどのデータが流れているかを見ることができます。各ファイルへのパスを含め、ファイルの読み込みを確認することができます。また、POSTおよびGET変数をスニッフィングすることもできます。これはファイルがどこから引かれているかを示し、それに基づいて相対パスをそれに応じて修正することができます。

https://addons.mozilla.org/en-US/firefox/addon/6647

重要:SWFから呼び出さ

すべての対外資産はウェブではなく、SWFにロードされたときにそれらをロードするhtmlファイルに対して相対的です。唯一の例外です。これはAS3から始まったものですが、FLVはSWFに関連しており、他のすべてのアセットのようにSWFをロードするHTMLドキュメントではありません。これはSNIFFERSが重要なツールであるため、スニッファのURLが奇妙なパスを呼び出していることに気づくまで、私はしばらく頭を傷つけました。

以下はサウンドの読み込み方法です。

var soundRequest:URLRequest = "path/to/file.mp3"; 
var s:Sound = new Sound(soundRequest); 
var sChannel = s.play(0, int.MAX_VALUE); //Causes it to repeat by the highest possible number to flash. 
//Above starts the sound immediatly (Streaming);

//Now to wait for completion instead, pretend we didnt start it before. s.addEventLister(Event.SOUND_COMPLETE, onSComplete, false, 0, true); function onSComplete(e:Event):void { var sChannel = s.play(0, int.MAX_VALUE); //Causes it to repeat by the highest possible }

0

両方のプロトコルで、RTMP & HTTPの場合、パスは "path/to/mp3:file.mp3"または "path/to/mp3:file"にする必要があります。私は思い出せる。両方を確認してください。

関連する問題