Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Слушатель изменения переменной (http://www.flasher.ru/forum/showthread.php?t=189670)

Koby 15.12.2012 21:11

Слушатель изменения переменной
 
Здравствуйте, толкового ответа мне не удалось найти на форуме, поэтому решил спросить сам.
Есть переменная, при изменении которой вызывается функция..

нужно написать слушатель, но вот какой..

Korchy 15.12.2012 21:16

Что значит "слушатель"?
Вы хотите мониторить момент изменения переменной? Делаете класс, наследуя его от EventDispatcher, в нем делаете свою переменную. Делаете методы get и set для переменной. В гетере-сетере вызываете dispatchEvent. В любом другом месте мониторите изменение, организоывая прослушку через addEventListener.

Koby 15.12.2012 21:52

у меня необходимая переменная в классе который уже наследует Sprite, одновременно Sprite и EventDispatcher. Можно какой нибудь пример для разбора?

Zebestov 15.12.2012 22:18

Код AS3:

package
{
        import flash.display.Sprite;
        import flash.events.Event;
 
        public class MyDispatcher extends Sprite
        {
                private var _someVar:int;
 
                public function MyDispaycher()
                {
                        super();
                }
 
                public function set someVar(value:int):void
                {
                        this._someVar = value;
                        super.dispatchEvent(new Event(Event.CHANGE));
                }
 
                public function get someVar():int
                {
                        return this._someVar;
                }
        }
}

Код AS3:

package
{
        import flash.events.Event;
 
        public class MyListener
        {
                private var _myDispatcher:MyDispatcher;
 
                public function MyListener()
                {
                        this._myDispatcher = new MyDispatcher();
                        this._myDispatcher.addEventListener(Event.CHANGE, onChange);
                        // ну и для проверочки
                        this._myDispatcher.someVar = 123;
                }
 
                private function onChange(event:Event):void
                {
                        trace("ЭЭЭ!! Э! А НУ ЧО ТАМ: " + this._myDispatcher.someVar); // 123?
                }
        }
}



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

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