Форум 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=98383)

BigDan 12.07.2007 14:08

Область видимости свойства для обработчика
 
Вся проблема в том, что обработчик события не видит переменную определённую в том же классе:
Код:

class Test
{
        private var object:MovieClip;
        public function Test(__object:MovieClip)
        {
                object = __object;
                object.onMouseDown = onDown;
        }
        function onDown():Void
        {
                trace(object);//undefined
        }
}


etc 12.07.2007 14:10

Ну естесственно, ведь это AS2.
Delegate в помощь.

BigDan 12.07.2007 14:23

сенкс

this.create 12.07.2007 15:18

Код:

class Test {
    private var object:MovieClip;
    public function Test(__object:MovieClip) {
        object = __object;
        var ob:Test = this;
        object.onMouseDown = function():Void  {
            trace(ob.object);
        };
    }
}


etc 12.07.2007 17:27

this.create, никогда больше так не делай.

Molecula 12.07.2007 17:37

А как лучше, так:

Код:

class Test
{
        private var object:MovieClip;
        public function Test(__object:MovieClip)
        {
                object = __object;
                object.onMouseDown = Delegate.create(this,this.onDown);
        }
        function onDown():Void
        {
                trace(object);//undefined
        }
}

Упс...забыл.

etc 12.07.2007 17:40

Molecula, а код оформить?

this.create 12.07.2007 17:47

Цитата:

Сообщение от __etc
this.create, никогда больше так не делай.

Почему? Вообще у Мука прочитал про этот способ...

etc 12.07.2007 17:54

Цитата:

Сообщение от this.create
Почему? Вообще у Мука прочитал про этот способ...

Плохой это способ.

this.create 12.07.2007 17:56

Цитата:

Сообщение от __etc
Плохой это способ.

Чем. Вы объясните, я сделаю вывод о применений этого приема на практике.


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

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