|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jan 2012
Адрес: Казахстан, Костанай
Сообщений: 25
|
Загрузка и проигрывание звукового файла
Здравствуйте!
У меня такой вопрос: Делаю он-лайн плеер. Есть компонент List в него подгружаю ссылки на mp3 файлы с сайта. Для загрузки и воспроизведения использую класс Sound. В первый раз когда кликаю по названию песни, звук воспроизводится. Второй раз когда кликаю по названию выходит ошибка! Error: Error #2037: Functions called in incorrect sequence, or earlier call was unsuccessful. Получается я не могу остановить загрузку первого файла. Используя такой код в обработчике события при клике в компоненте List. function listClick(e:ListEvent):void { var list:List = e.target as List; var item:Object = e.item; trace("Label: " + item.label); trace("Label displayed: " + item.url); if (channel) { channel.stop(); } music.load(null); music.addEventListener(Event.COMPLETE,musicListener); music.load(new URLRequest(item.url)); channel = music.play(); music.removeEventListener(Event.COMPLETE,musicListener); } |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
Создавайте новый Sound каждый раз.
Цитата:
|
|
|||||
Регистрация: Jan 2012
Адрес: Казахстан, Костанай
Сообщений: 25
|
Загрузка звуковых файлов
Спасибо. Пробовал. Но когда загружаешь третий раз любой файл выходит ошибка
Ошибка при открытии URL-адреса 'http://rapidly.ru/audio/70747448/41307679/Kasta-Vokrug_shum.mp3' Error #2044: Unhandled IOErrorEvent:. text=Error #2032: Stream Error. at src::NetPhotoSlide/src::listClick() at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at fl.controls::SelectableList/fl.controls:SelectableList::handleCellRendererDoubleClick() Может быть из-за того, что все таки продолжается загрузка еще тех прежних ссылок на звуковые файлы? function listClick(e:ListEvent):void { var list:List = e.target as List; var item:Object = e.item; trace("Label: " + item.label); trace("Label displayed: " + item.url); var music:Sound=new Sound(); if (channel) { channel.stop(); } music.addEventListener(Event.COMPLETE,musicListener); music.load(new URLRequest(item.url)); channel = music.play(); music.removeEventListener(Event.COMPLETE,musicListener); } |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
А у вас сервер ограничивает количество одновременных загрузок? Тогда и из-за этого может быть. В этом случае предыдущему sound нужно сделать close().
|
|
|||||
Регистрация: Jan 2012
Адрес: Казахстан, Костанай
Сообщений: 25
|
Загрузка звуковых файлов
Цитата:
function listClick(e:ListEvent):void { var list:List = e.target as List; var item:Object = e.item; trace("Label: " + item.label); trace("Label displayed: " + item.url); trace(music); if (music){ music.close(); } var music:Sound=new Sound(); if (channel) { channel.stop(); } music.addEventListener(Event.COMPLETE,musicListener); music.load(new URLRequest(item.url)); channel = music.play(); music.removeEventListener(Event.COMPLETE,musicListener); } Error #2044: Unhandled IOErrorEvent:. text=Error #2032: Stream Error. at src::NetPhotoSlide/src::listClick() at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at fl.controls::SelectableList/fl.controls:SelectableList::handleCellRendererDoubleClick() Что делать? |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
И что у вас выдает trace(music)? null? У вас переменная локальная, она каждый раз в функции null будет и старый sound вы не закроете. И посмотрите в каком-нибудь http-мониторе, что именно вам сайт отдает вместо файла, какую именно ошибку.
|
|
|||||
Регистрация: Jan 2012
Адрес: Казахстан, Костанай
Сообщений: 25
|
Загрузка звуковых файлов
Цитата:
Я делал sound как глобальную переменную. Но тогда при попытке закрытия потока, выдает ошибку: Error: Error #2029: This URLStream object does not have a stream opened. А можно ли узнать если поток загрузки sound открыт, то закрыть его? |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
А вы его в вашей переменной в new Sound() инициализируете? Устанавливайте ее в null изначально и пользуйтесь конструктором Sound(URLRequest).
|
|
|||||
Регистрация: Jan 2012
Адрес: Казахстан, Костанай
Сообщений: 25
|
Загрузка звуковых файлов
Цитата:
Объявил глобальную переменную: в обработчике события компонента List при двойном щелчке использую код: function listClick(e:ListEvent):void { var list:List = e.target as List; var item:Object = e.item; trace("Label: " + item.label); trace("Label displayed: " + item.url); trace(music); if (music){ music.close(); } if (channel) { channel.stop(); } music=new Sound(new URLRequest(item.url)); music.addEventListener(Event.COMPLETE,musicListener); //music.load(new URLRequest(item.url)); channel = music.play(); music.removeEventListener(Event.COMPLETE,musicListener); } выйдет ошибка о том что поток не открыт, что бы его закрывать. |
Часовой пояс GMT +4, время: 13:50. |
|
« Предыдущая тема | Следующая тема » |
Теги |
sound , звук , звуки , Остановка загрузки |
|
|