Форум 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)
-   -   почему trace() не работает? (http://www.flasher.ru/forum/showthread.php?t=111802)

Dear.D 08.05.2008 16:00

почему trace() не работает?
 
почему trace() не работает?
Код:

for (var i = 1; i<=12; i++) {
        this["mc"+i]["fon"+i].onPress = function() {
                this._parent.startDrag(false);
        };
        this["mc"+i]["fon"+i].onRelease = function() {
                stopDrag();
                trace(_parent["mc"+i]._y);
        };
}

вместо _parent писал this, одна фигня undefined.
Также на _root не реагирует, может че со счетчиком?
Если написать trace(this.mc1._y); то все работает :wacko:

iNils 08.05.2008 16:06

Потому, что выражение ["mc"+i] - вычисляется на момент вызова, а не когда написали. А поскольку вы используется не локальный для клипа i, а его предка, то к моменту получаете 12.

Надо так
Код:

for (var i = 1; i <= 12; i++) {
        var mc:MovieClip = this["mc" + i]["fon" + i];
        mc.i = i;
        mc.onPress = function () {
                this._parent.startDrag (false);
        };
        mc.onRelease = function () {
                stopDrag ();
                trace (_parent["mc" + this.i]._y);
        };
}


chingachgoog 08.05.2008 16:08

this._parent["mc"+this.i]._y

Dear.D 08.05.2008 16:13

все равно undefined (оба раза)

iNils 08.05.2008 16:41

Ну это уже проблема в адресации :)
_parent указывает на ["mc" + i], а вы в нем пытаетесь его найти :)

Dear.D 08.05.2008 16:49

Цитата:

Сообщение от iNils (Сообщение 737977)
Ну это уже проблема в адресации :)

тогда почему _root не помогает, ведь он обращается с самого верха?

iNils 08.05.2008 17:12

Я не вижу в коде рута.

Dear.D 08.05.2008 17:18

Код:

for (var i = 1; i<=12; i++) {
        this["mc"+i]["fon"+i].onPress = function() {
                this._parent.startDrag(false);
        };
        this["mc"+i]["fon"+i].onRelease = function() {
                stopDrag();
                trace(_root["mc"+i]._y);
        };
        updateAfterEvent();
}


iNils 08.05.2008 17:23

Смотрим на синий код в сообщении номер два и применяем его к коду в сообщении номер 8.

А в чем сакральный смысл updateAfterEvent в данном коде?

Dear.D 08.05.2008 17:40

получилось, только нифига не понятно (а это главное)
весь смысл в том, что после onRelease надо будет переопределить координаты клипа (клип будет останавливаться только по заданной сетке)


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

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