Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   обработчик события внутри цикла, как поменять переменную? (http://www.flasher.ru/forum/showthread.php?t=116924)

Dear.D 14.10.2008 14:34

обработчик события внутри цикла, как поменять переменную?
 
На сцене два мувика, при клике по любому из них должна меняться соответствующая клипу переменная L0 или L1
Как мне внутри обработчика onPress изменить переменную "L"+i
Код:

for (var i = 0; i<2; i++) {
        this["L"+i] = 1;
        trace("L"+i+" = "+this["L"+i]);
        this["mc"+i].onPress = function() {
                this._parent["L"+i] *= -1;//в этом месте i уже равно 2
                trace("L"+i+" = "+this._parent["L"+i]);
        };
}


lexa2000lexa 14.10.2008 14:37

попробуйте вот так
Код:

for (var i = 0; i<2; i++) {
        this["L"+i] = 1;
        this["L"+i]. id = i;
        trace("L"+i+" = "+this["L"+i]);
        this["mc"+i].onPress = function() {
                this._parent["L"+i] *= -1;//в этом месте i уже равно 2
                trace("L"+i+" = "+this._parent["L"+i]+"this.id"+this.id);
        };
}

может это вам поможет.

iNils 14.10.2008 14:40

Код:

this["L"+i] = 1;
Это что?

Dear.D 14.10.2008 14:43

может я не так объяснил. Клипу mc0 соответствует переменная L0 (клипу mc1 - L1). При клике по клипу его переменная должна менять знак. L0 была равна 1, должна стать -1.

this["L"+i] = 1;
это объявление двух переменных L0, L1 и присвоение значения обеим переменным 1.

iNils 14.10.2008 14:49

А зачем их хранить в переменной вне клипа mcХ?

lexa2000lexa 14.10.2008 14:51

вот немного доработанное рещение
Код:

for (var i = 0; i<2; i++) {
        this["L"+i] = 1;
        this["mc_"+i]. id = i;
        trace("L"+i+" = "+this["L"+i]);
        this["mc_"+i].onPress = function() {
                this._parent["L"+this.id] *= -1;//в этом месте i уже равно 2
                trace("L"+this.id+" = "+this._parent["L"+this.id]);
        };
}


Dear.D 14.10.2008 14:54

Цитата:

Сообщение от iNils (Сообщение 770274)
А зачем их хранить в переменной вне клипа mcХ?

да в общем-то незачем, а как их поместить внутрь клипов?
наверно так this["mc"+i]["L"+i] = 1;
а как тогда обратиться к этой переменной внутри обработчика?

iNils 14.10.2008 15:02

Код:

for (var i = 0; i < 2; i++) {
        var mc = this["mc" + i];
        mc.l = 1;
        trace (mc._name + ".l = " + mc.l);
        mc.onPress = function () {
                this.l *= -1;
                trace (this._name + ".l = " + this.l);
        };
}


lexa2000lexa 14.10.2008 15:05

вот еще вариант
Код:

for (var i = 0; i<2; i++) {
        this["mc"+i]. id = i;
        this["mc"+i].onPress = function() {
                this["L"+this.id] = (this["L"+this.id]>0)? -1:1;
                trace("L"+this.id+" = "+this["L"+this.id]);
        };
}


Dear.D 14.10.2008 15:36

а у iNilsа проще :-)
все равно спасибо


Часовой пояс GMT +4, время: 18:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.