Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Свое событие (Event) (http://www.flasher.ru/forum/showthread.php?t=129569)

MaxFX 04.09.2009 16:22

Свое событие (Event)
 
Подскажите как сделать свое событие в классе с последующем добавлением слушателя.
Нужно примерно следующее (это тестовый пример):

Код AS3:

public class Game
{
        private var _table: Table;
 
        public function Game()
        {
                _table = new Table();
                _table.addEventListener(МОЕ_СОБЫТИЕ, OnChangeTotalValue);
        }
 
        public function OnChangeTotalValue(e:Event)
        {
                //Вывожу общую сумму в TextField
                txtValue.text = _table.Total.toString();
        }
 
        public function ChangeValues()
        {
                //Изменяю I и хочу чтобы сработал метод OnChangeTotalValue
                _table.I = 20;
 
        }
}
 
public class Table
{
        private var _i: Number = 0;
        private var _j: Number = 0;
 
        public function set I(val: Number)
        {
                _i = val;
                //Здесь надо сгенерировать событие что сумма изменится
        }
 
        public function set J(val: Number)
        {
                //Здесь надо сгенерировать событие что сумма изменится
                _j = val;
        }
 
        public function get Total()
        {
                return _i + _j;
        }
}


FlashRabbit 04.09.2009 16:30

Код AS3:

package
{
        import flash.events.Event;       
 
        public class CustomEvent extends Event
        {
                private var _total:int;
                public static const CHANGE:String = "Custom.change";
 
                public function CustomEvent(type:String, _total:int, bubbles:Boolean = false, cancelable:Boolean = false)
                {
                        super(type, bubbles, cancelable);
                        _total = _total;
                }
 
 
                public function get total():int
                {
                        return _total;
                }
        }
}

Код AS3:

addEventListener(CustomEvent.CHANGE, onChange);
function onChange(e:CustomEvent):void
{
      trace(e.total);
}


Gaen 04.09.2009 16:33

Если не нужно передавать с событием никаких дополнительных данных, то просто укажите свой тип события:

Код AS3:

 
_table.addEventListener("myTotalValueChanged", OnChangeTotalValue);
 
...
 
_i = val;
this.dispatchEvent(new Event("myTotalValueChanged"));

И ещё для этого класс Table должен наследоваться от EventDispatcher.

MaxFX 04.09.2009 16:41

Не понял только как само событие сгенерировть вот в этом участке кода
Код AS3:

public function set I(val: Number)
{
        _i = val;
        //Здесь надо сгенерировать событие что сумма изменится
}


MrPoma 04.09.2009 16:44

Код AS3:

dispatchEvent(new Event('event'));


MaxFX 04.09.2009 16:55

Туплю :wacko:


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

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