PDA

Просмотр полной версии : Логика управления объектами


Kukoba
22.04.2008, 12:28
Ситуация вот в чем.
Имеется мувик с 15-ю кнопками. Каждая из них - это маленький плеер, загружающий mp3 методом new Sound();
Вопрос в следующем: как правильнее всего сделать так, что бы во время старта каждая из кнопок выключала ту, которая играет сейчас и сама начинала играть. То есть в один момент времени должна играть только одна кнопка.
Проблемы в принципе нет. Пробовал вводить глобальную переменную _global.activePlaybackItem. Вроде работает - но есть одна засада - это загрузчик. Бывает, что кнопку выключили в то время когда она еще недогрузилась. И в самый ненужный момент срабатывает событие sound.onLoadComplete() у выключеной кнопки;

Так же пробовал вводить состояния кнопок(sleep, run, loading, playback, shutdown, sleep)
И каждая из кнопок при старте проверяла в цикле все остальные кнопки на предмет состояния. И только при условии когда все были в состоянии sleep - она стартовала.
При этом те кнопки, которые не были в sleep состоянии, она их туда отправляла.

Это тоже вроде работает до тех пор пока играет локально. Только загружаешь все на сервер - начинаются чудеса.....

Скажите плиз - есть какой нибудь правильный распространенный способ сделать простую логику управления объектами. Или это кто как придумает?


З.Ы. Все плееры - инстансы одного мувика.

Psycho Tiger
22.04.2008, 12:57
Незнаю, помоему в корне неправильный подход. Я бы делал так:
Создаю 1 (один) обьект с музыкой, 1 (одну) булеву переменную и 1 (один) загрузчик.

Пишу 1 (одну) функцию:
Её логика:
Получает параметр - имя песни. Проверяет булеву переменную - если она true - значит сейчас идет загрузка песни.
Убиваем загрузку песни, если она идет. Если играет какая то песня, я думаю, лучше её не трогать - пусть играет себе (имею ввиду она полностью загружена), а то юзер заскучает.
Присваеваем булевой переменной true.
В загрузчик ставим эту песню - она грузится.
Когда загрузилась - меняем булеву переменную на false, начинаем играть эту музыку (в том единственном обьекте с музыкой), предварительно остановив то что играло ранее.
Конец функции.

Теперь на каждую кнопку вешаем чтобы она вызывала эту функцию с разными параметрами - URL mp3 шек.

Kukoba
22.04.2008, 15:11
Незнаю, помоему в корне неправильный подход. Я бы делал так:
Создаю 1 (один) обьект с музыкой, 1 (одну) булеву переменную и 1 (один) загрузчик.

Пишу 1 (одну) функцию:
Её логика:
Получает параметр - имя песни. Проверяет булеву переменную - если она true - значит сейчас идет загрузка песни.
Убиваем загрузку песни, если она идет. Если играет какая то песня, я думаю, лучше её не трогать - пусть играет себе (имею ввиду она полностью загружена), а то юзер заскучает.
Присваеваем булевой переменной true.
В загрузчик ставим эту песню - она грузится.
Когда загрузилась - меняем булеву переменную на false, начинаем играть эту музыку (в том единственном обьекте с музыкой), предварительно остановив то что играло ранее.
Конец функции.

Теперь на каждую кнопку вешаем чтобы она вызывала эту функцию с разными параметрами - URL mp3 шек.

Пля - ты гений ;-))))) Только я бы передавал функции просто имя кнопки ;-)))) Седни попробую!! Сенкс!!!;-))