Как воспроизвести в Actionscript 3 звук, который не находится в том же каталоге, что и SWF?
-
01-07-2019 - |
Вопрос
У меня есть проект с кучей внешних звуков в 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:файл».Я помню.Пожалуйста, проверьте оба.