PDA

Просмотр полной версии : помогите сделать цикл+onRelease+function


billion
06.07.2006, 14:37
смысл в следующем:

есть функция, которую я хочу динамически прицеплять к кнопкам(мувикам):

function my_func(nnn) {
trace (nnn);
}
прицепляю без цикла (всё работает):

_root.node1.onPress = function() {my_func(1);}
_root.node2.onPress = function() {my_func(2);}
..................
_root.node99.onPress = function() {my_func(99);}
заключаю в цикл:
for (i=1; i<3; i++) {
_root["node"+i].onPress = function() {
my_func(i);
};
}
трэйс функции при нажатии на любую ноду выдаёт цифру 3 то есть конечную i = 3 (а мне надо чтоб для ноды1 было i = 1 и т.д. по порядку)

пробовал и так:

for (i=1; i<3; i++) {
_root["temp"+i] = i;
trace ("111 ="+_root["temp"+i]);
_root["node"+i].onPress = function() {
my_func(_root["temp"+i]);
};
}

вывод трэйса:

111 =1
111 =2
undefined
undefinedпочему undefined????
весь измучился.... помогите несмышлёному...

iNils
06.07.2006, 14:51
billion получает предупреждение за игнорирование тегов

function my_func (nnn) {
trace (nnn);
}
for (i = 0; i < 3; i++) {
var mc = _root["node" + i];
mc.id = i;
mc.onPress = function () {
my_func (this.id);
};
}

billion
06.07.2006, 15:54
большое спасибо! часов 5 убил на эту проблему.
так и не понял почему мой вариант не работал. вроде то же самое писал.

etc
06.07.2006, 21:12
billion, не тоже самое. После выполнения цикла глобальная для функции my_func переменная i будет равна трём. У тебя вызывается my_func(i), а не my_func(число), собственно, ты так и написал.