Просмотр полной версии : передача переменной из цикла для onPress
die hetzer
23.07.2007, 18:09
hi all!
помогите советом, кто может.
на сцене 3 кнопки (button1, ..2, ..3)
нужно чтобы каждая кнопка выводила разный trace (0, 1, 2)
не работает (trace выводит на каждой кнопке "3")
loadInfo = function(a) {
trace(a)
}
for (var i=0; i<3; i++) {
_root["button"+i].onPress = function() {
loadInfo(i);
}
}
работает, но решение, чувствую, кривое
loadInfo = function(a) {
trace(a)
}
for (var i=0; i<3; i++) {
_root["button"+i].i = i;
_root["button"+i].onPress = function() {
loadInfo(this.i);
}
}
исходник
Решение самое, что есть не кривое
screamge
23.07.2007, 18:19
for (var i=0; i<= 3; i++) {
_root["button"+i]._id = i
_root["button"+i].onPress = function (){
trace (this._id)
}
}
die hetzer
23.07.2007, 18:24
screamge, спасибо. я заменил i на _id но суть таже
screamge, а чем твое решение отличается от второго кода в первом посте?
Вообще, если хочется извратиться, то можно так:
loadInfo = function(a) {
trace(a)
}
for (var i=0; i<3; i++) {
var btn = _root['button'+i];
btn.onPress = function() {
loadInfo(Number(this._name.substr(6)));
}
}
die hetzer
23.07.2007, 18:26
__etc, ага я тоже об этом думал)
screamge
23.07.2007, 18:47
Ничем, только работает и вместо "i" написанно "id" :) вот и всё)).
Ничем, только работает и вместо "i" написанно "id" :) вот и всё)).
Замечательно :D
Ещё тем, что у тебя «<=», а не «<»…
screamge
23.07.2007, 18:55
вот уже три отличия нашли ))))))
screamge, спасибо. я заменил i на _id но суть таже
Ок, я на авторство кода и не претендовал :D
Ведь последняя кнопка тогда ничего не выдает. Зачем такое извращение? :)
BARTLEBY
23.07.2007, 23:28
гхм..
а зачем такой изврат то?
если кнопок всего три то вот этот код самый что не наесть нормальный =)
btn1.prop = 1;
btn2.prop = 2;
btn3.prop = 3;
btn1.onPress = Press;
btn2.onPress = Press;
btn3.onPress = Press;
//если их много и у каждой свой номер то...
for (var i = 0; i<20; i++) {
this.attachMovie("btn", "btn"+i, i);
btn[i].onPress = Press;
btn[i].prop = i
}
// если кнопки уже на поле и их нужно перебрать то
n = 0
for (var btn in this) {
if (this[btn] instanceof Button) {
this[btn].onPress = Press;
this[btn].prop = n
n++
}
}
function Press() {
trace(this.prop);
}
screamge
24.07.2007, 01:39
гхм..
а зачем такой изврат то?
Это вы тот что до вашего варианта предложен был извратом называете?
BARTLEBY
24.07.2007, 02:24
screamge
да
А по-моему как раз наоборот, последний вариант — редкостный и неочевидный изврат.
BARTLEBY
24.07.2007, 17:09
for (var i =0; i<2; i++){
this['btn'+i].prop = i
this['btn'+i].onPress = Press;
}
function Press() {
trace(this.prop);
}
вот тоже самое в цикле.
где тут изврат и чем этот код хуже вашего???
Оно уже ничем не лучше, а тоже самое.
screamge
24.07.2007, 17:20
Теперь будем искать различие и в этом примере?!))
CrazyFlasher
27.07.2007, 19:59
короче переклинило:
на сцене 35 кнопок: btn1...btn35
как описать циклом:
btn1.onPress = function(){
trace(btn1)
}
ваши способы увы не пашут =)
for (i = 1;i < 36;i++) {
var btn = this['btn'+i];
btn.onPress = function() {
trace(this);
}
}
delete btn;
CrazyFlasher
27.07.2007, 20:04
блин, точно =) благодарю!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.