PDA

Просмотр полной версии : Управление звуковыми объектами, находящимися в массиве


dimarik
03.06.2004, 11:40
Дано
1. Массив объектов Sound в виде
var sndObjectsArray = [];
var sndObjectsArrayIndex = 0;

// В цикле пригружаем звучки, имена файлов в массиве sndFileNamesArray
sndObjectsArray[sndObjectsArrayIndex] = new Sound();
sndObjectsArray[sndObjectsArrayIndex].loadSound(sndFileNamesArray[sndObjectsArrayIndex], false);
sndObjectsArrayIndex++;

2. Элемент управления громкостью и балансом общий для всего мувика (да, собственно и для кучи других мувиков)управляет объектом звука playerSound
//
playerSound = new Sound();
playerSound.onSoundComplete = function(){
// _НЕ_РАБОТАЕТ_!!!_А_ОЧЕНЬ_НАДА_
}
playerSound = sndObjectsArray[1];
//
sndObjectsArray[1].onSoundComplete = function(){
// _РАБОТАЕТ_НО_НАМ_ТАКОГО_НЕ_НАДА!!!_
}
Другими словами - не работает хэндлер onSoundComplete для объекта playerSound

Вопрос.
Как динамически переопределять хэндлер onSoundComplete для playerSound, который в свою очередь берет "контент" из объектов в массиве sndObjectsArray.

DeliMIter
03.06.2004, 14:13
Оригинал написал(а) dimarik playerSound = new Sound();
playerSound.onSoundComplete = function(){
// _НЕ_РАБОТАЕТ_!!!_А_ОЧЕНЬ_НАДА_
}
playerSound = sndObjectsArray[1];А теперь посмотри, что ты написал... Ты создаешь новый саунд, назначаешь ему хандлер, а потом этой переменной присваиваешь абсолютно другой объект. Естественно он у тебя работать не будет, так как хандлер умерает смертью храбрых вместе со старым объектом.

dimarik
03.06.2004, 14:42
Хм... А как правильно?

DeliMIter
03.06.2004, 15:14
Назначь хандлеры объектам - элементам массива. Они и будут срабатывать. Если ты хочешь, чтобы у тебя было загружено несколько звуков одновременно, то именно так - правильно.

dimarik
03.06.2004, 17:12
Не могу - не знаю количество элементов массива (генерится динамически и кол-во элементов заранее не известно).