Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 27.04.2011, 03:20
.true вне форума Посмотреть профиль Отправить личное сообщение для .true Посетить домашнюю страницу .true Найти все сообщения от .true
  № 1  
Ответить с цитированием
.true
 
Аватар для .true

Регистрация: Oct 2009
Адрес: Москва
Сообщений: 73
Отправить сообщение для .true с помощью ICQ
По умолчанию Flash Sound, SoundChannel. Перестают функционаровать со временем.

Доброго времени суток.

Имею задачу - написать аудиоплеер, который может проигрывать различные потоки.
Сделал класс SoundManager, который создается в Root-классе при инициализации приложения.
Далее, как только поступает запрос, Root-класс вызывает метод Play в SoundManager с параметром (линка на проигрывание).

При каждом вызове этого метода (Play) проверяется наличие уже существующих объектов Sound. Тщательно убиваются приаттаченные евенты, останавливается звук. затем используя эти же (уже очищенные переменные) создаю новый класс Sound и т.п.

и вроде бы все было хорошо.. но если заставить вызвать метод 5-6 раз.. то звук пропадает..
возможно, кто-нибудь сталкивался c этим...
чувствую что делаю что-то не так, но не могу понять что

P.S. объект саунда старательно прибивал, и старательно отслеживал чтобы он действительно умер

Добавлено через 10 минут
p.s. заметил еще одну странную вещь: когда нажимаю паузу, а потом снова плей, иногда звук не начинает играть.

Код AS3:
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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:24.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.