![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Доброго времени суток.
Имею задачу - написать аудиоплеер, который может проигрывать различные потоки. Сделал класс SoundManager, который создается в Root-классе при инициализации приложения. Далее, как только поступает запрос, Root-класс вызывает метод Play в SoundManager с параметром (линка на проигрывание). При каждом вызове этого метода (Play) проверяется наличие уже существующих объектов Sound. Тщательно убиваются приаттаченные евенты, останавливается звук. затем используя эти же (уже очищенные переменные) создаю новый класс Sound и т.п. и вроде бы все было хорошо.. но если заставить вызвать метод 5-6 раз.. то звук пропадает.. возможно, кто-нибудь сталкивался c этим... чувствую что делаю что-то не так, но не могу понять что ![]() P.S. объект саунда старательно прибивал, и старательно отслеживал чтобы он действительно умер ![]() Добавлено через 10 минут p.s. заметил еще одну странную вещь: когда нажимаю паузу, а потом снова плей, иногда звук не начинает играть. public class SoundManager extends Sprite { public var _url:String; private var song:SoundChannel; public var _root; private var factory; public var _position:Number; public function SoundManager(root) { this._root = root; // Сохраняем ссылку на рутовый класс var _position = 0; this.factory = null; // Инициализируем объект Sound } public function Pause() { this._position = this.song.position; this.song.stop(); } public function Play() { this.destroy(); // прибиваем старый объект this.factory = new Sound(); // вешаем события factory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); factory.addEventListener(ProgressEvent.PROGRESS, progressHandler); var request:URLRequest = new URLRequest(this._url); factory.load(request); this.song = factory.play(); } public function destroy() { if (this.factory != null) { trace('factory is not null'); factory.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); factory.removeEventListener(ProgressEvent.PROGRESS, progressHandler); this.song.stop(); this.song = null; } } }
__________________
Если ты не часть решения, тогда ты – часть проблемы. Последний раз редактировалось .true; 27.04.2011 в 04:28. |
![]() |
Часовой пояс GMT +4, время: 11:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|