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

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

Какова ваша фактическая структура каталогов?

Другие советы

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

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

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

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

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

Важный:

Все внешние ресурсы, вызываемые из SWF, относятся к HTML-файлу, загружающему их при загрузке в Интернет, а не к SWF.Единственное исключение, и оно началось с 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, путь должен быть «путь/к/mp3:файл.mp3» или «путь/к/mp3:файл».Я помню.Пожалуйста, проверьте оба.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top