SWF와 동일한 디렉토리에 있지 않은 Actionscript 3에서 사운드를 재생하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/108276

문제

SWF에 대한 외부 사운드가 포함된 프로젝트가 있습니다.재생하고 싶지만 사운드 개체에 새 URL을 로드하려고 할 때마다 실패합니다.

오류 #2068:잘못된 소리

또는 다음과 같이 ioError를 발생시킵니다.

오류 #2032 스트림 오류

// "http://.." "file://.." "//.." 및 ".." 접두사가 붙은 경로로 시도함)

var path:String = "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);
도움이 되었습니까?

해결책

음, 방금 mp3를 디렉토리에 넣어 테스트를 수행했습니다. soundTest/assets/song.mp3 그런 다음 다른 디렉토리에서 mp3를 호출하는 swf를 만듭니다. soundTest/swfs/soundTest.swf 그리고 내가 사용할 때 var path:String = "../assets/song.mp3"; 그런 다음 오류 없이 컴파일됩니다.

실제 디렉토리 구조는 무엇입니까?

다른 팁

전체 URL을 입력하지 않는 한 http:// 또는 file://을 사용하지 마세요.

사운드는 전체 또는 상대 URL에서 mp3 파일을 로드할 수 있습니다.귀하의 URL이 정확하고 유효한지 확인하기만 하면 됩니다.

예를 들어 파일의 전체 경로가 다음과 같은 경우 http://www.something.com/assets/the_song.mp3, "/assets/the_song.mp3" 경로가 작동합니다.

FireFox용 httpfox를 다운로드해야 합니다.이 SNIFFER를 사용하면 브라우저를 통해 어떤 데이터가 흐르는지 확인할 수 있습니다.각각의 경로를 포함하여 로드되는 파일을 볼 수 있으며 POST 및 GET 변수를 스니핑할 수도 있습니다.이렇게 하면 파일을 가져오는 위치가 표시되며 그에 따라 상대 경로를 수정할 수 있습니다.

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

중요한:

SWF에서 호출된 모든 외부 자산은 SWF가 아니라 웹에 로드할 때 로드하는 html 파일을 기준으로 합니다.유일한 예외는 AS3에서 시작된 것으로, FLV는 다른 모든 자산처럼 SWF를 로드하는 HTML 문서가 아니라 SWF를 기준으로 합니다.이것이 바로 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 }

RTMP 및 HTTP 프로토콜 모두에서 경로는 "path/to/mp3:file.mp3" 또는 "path/to/mp3:file"이어야 합니다.나는 기억한다.둘 다 확인해주세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top