Как воспроизвести звук в Actionscript 3, который не находится в том же каталоге, что и SWF? - PullRequest
3 голосов
/ 20 сентября 2008

У меня есть проект с кучей внешних звуков для 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);

Ответы [ 4 ]

2 голосов
/ 21 сентября 2008

Ну, я только что сделал тест, поместив mp3 в каталог: soundTest/assets/song.mp3, затем создав SWF, который вызывает mp3 в другом каталоге: soundTest/swfs/soundTest.swf, а когда я использую var path:String = "../assets/song.mp3";, он компилируется без ошибки.

Какая у вас структура каталогов?

2 голосов
/ 26 сентября 2008

Вам действительно нужно скачать httpfox для FireFox. Этот SNIFFER позволяет вам видеть, какие данные проходят через браузер. Вы можете видеть файлы, которые они загружают, включая пути к каждому, и вы даже можете прослушивать переменные POST и GET. Это покажет вам, откуда файлы извлекаются, и на основании этого вы можете соответственно исправить свои относительные пути.

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

Важно:

Все внешние ресурсы, вызываемые из SWF, относятся к HTML-файлу, загружающему их при загрузке в Интернете, а не к SWF. Единственное исключение, и это то, что началось с AS3, FLV относятся к SWF, а не к HTML-документу, загружающему SWF, как любой другой ресурс. Вот почему СНИФЕРЫ являются важным инструментом, я некоторое время чесал голову, пока не заметил, что 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);</p>

<p>//Now to wait for completion instead, pretend we didnt start it before.
<code>s.addEventLister(Event.SOUND_COMPLETE, onSComplete, false, 0, true);</code>
function onSComplete(e:Event):void
{
   var sChannel = s.play(0, int.MAX_VALUE); //Causes it to repeat by the highest possible
}
2 голосов
/ 20 сентября 2008

Если вы не собираетесь указывать полный URL, не используйте http: // или file: //

Sound может загружать mp3-файлы с полной или относительной ссылки. Вам просто нужно убедиться, что ваш URL правильный и действительный.

Например, если полный путь к файлу равен http://www.something.com/assets/the_song.mp3,, будет работать путь "/assets/the_song.mp3".

0 голосов
/ 09 ноября 2008

В обоих протоколах, RTMP и HTTP, путь должен быть - «путь / к / mp3: file.mp3» или «путь / к / mp3: файл». Я помню. Пожалуйста, проверьте оба.

...