PDA

Просмотр полной версии : Переменная как параметр функции. Не работает.


KRooSTy
05.03.2007, 21:57
Помогите плиз.
Решил написать флешку которая генерит всплвающее меню из XML. Вот файл:
16655

На кнопки меню при создании вешается обработчик (при наведении) вызывающий функцию ( F_openSub(Parentid:Number) )

При вызове этой функции я передаю в качестве параметра переменную:

b.onRollOver= function () {F_openSub(i);};

Функция не срабатывает. Если я передаю не переменную а конкретную цифру - то все окей.

Подскажите плиз чайнику... :(

this.create
05.03.2007, 22:08
Скажу сразу - отслеживаете полную загрузку не правильно. Забыли статус проверить.

KRooSTy
05.03.2007, 22:10
А можно подробнее? А то я еще совсем чайник. :)

this.create
05.03.2007, 22:16
xml_loader.ignoreWhite = true;
xml_loader.load('main.xml');
xml_loader.onLoad = function(success) {
if (success && !this.status) {
...
}
}; Правда это к вашему вопросу не имеет отношения, но все равно важно. Надо проверять при загрузке как сам удачный факт загрузки, так и статус xml файла. При удачном построении дерева xml статус будет 0. В зависимости от этих данных вы сможете сделать сообщения об ошибках, например.

this.create
05.03.2007, 22:28
Функция не срабатывает. Срабатывает.
Проблема в следующем: вы производите вызов значения переменной i после того как цикл полностью прокрутился. Поэтому у вас i всегда равно 8. Выход: либо назначать кнопке динамическое свойство и сохранять там текущее значение i для каждой кнопки, либо заносить значение i в массив и им уже оперировать.
Например, вариант с динамическим свойством на кнопку:
//Вешаем обработчик событий наведения на кнопку
b.i = i;
b.onRollOver = function() {
//Открываем подменю соответствующей кнопки
F_openSub(this.i);
};

KRooSTy
05.03.2007, 23:22
спасибо! последний листинг очень помог. :)
Правда появилась новая проблема, но это уже в другую тему. ;)