2008-09-20 5 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); 당신은 전체 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

두 개의 샘플이며 리턴은 넣지 않는 것처럼 보입니다 의견에. 그냥 런타임 오류가 아니라 컴파일 시간 오류를 받고있어 스트레스 싶어요. – tronster

+0

흠, 나는 또한 런타임 오류가 발생하지 않습니다. 예제 코드와 당신의 유일한 차이점은 IO 나 보안 오류를 듣고 있지 않다는 것입니다. 그것들을 제거한 사람들과 함께 시도해 볼 수 있습니까? – defmeta

2

, HTTP를 사용하지 않는 : // 또는 file : //

사운드 전체 또는 상대 URL에서 MP3 파일을로드 할 수 있습니다. 당신은 당신의 URL이 정확하고 타당한지를 확인하기 만하면됩니다.

예를 들어 파일의 전체 경로가 http://www.something.com/assets/the_song.mp3 인 경우 "/assets/the_song.mp3"경로가 작동합니다. soundTest/assets/song.mp3는 다른 디렉토리에있는 mp3 파일을 호출하는 SWF를 생성 :

+0

죄송합니다. 상단의 예에서는 명확하지 않았습니다. 패스의 제안을 시도하면 "../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"이어야합니다. 나는 기억할 수있다. 둘 다 확인하십시오.