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

v0vka 10.12.2009 01:31

создание событий для собственных объектов
 
Доброй ночи.
Есть класс, есть объект.
Хочу чтобы этот объект генерировал событие
а объекты других классов его слушали и обрабатывали.

Много читал по этой теме, но целостной картины так и не сложилось.

П.С. по ходу возникли 2 вопроса:
1. а как ещё кроме событий организовать связь между объектами вида: изменилось свойство в одном объекте - изменяются свойства (или выполняются методы) в других объектах (других классов)
2. не проще ли использовать AS 3.0? я посчитал его солжным для своего проекта, но уже начал задумываться...

KiL33 10.12.2009 08:23

1. Можно с помощью метода watch() Чтобы прекратить наблюдение за свойством, используйте метод unwatch()
2. Я бы даже сказал давно пора:)

v0vka 10.12.2009 10:12

получается термин "события" и AS 2.0 не совместимы?

я читал в ActionScript 2.0: библия программиста
там есть пример создания события, но в книге сказано что события могут генерировать только стандартные объекты.

Для ясности немного кода:
Код AS1/AS2:

class modules.Blocks.IT45 {
        //свойство: подано ли питание на блок
        private var power = false;        //по умолчанию выключен
 
        //включить/выключить
        public function turnOnOff() {
                power = !power;
        }
 
        //проверка подачи питания
        public function isPowerOn():Boolean {
                return power;
        }
}

Код AS1/AS2:

var _it45:IT45 = new IT45();        //создаем объект блока ИТ-45
 
        ASBroadcaster.initialize(_it45);
 
        //кнопка "БС.ВКЛ"
        var IT45_TMB_V_power:Tumbler_vert = new Tumbler_vert(_root.blk_it45.power_tumb);
        IT45_TMB_V_power._mc.onRelease = function()
        {
                //логика работы тумблера
                //включаем/выключаем ИТ-45
                _it45.turnOnOff();
                IT45_TMB_V_power.switchTumbler();
                broadcastMessage("IT45_power_switch", power);
        }

обработчик
Код AS1/AS2:

//создаем слушателя события "IT45_power_switch"
        IT45_TMB_V_podsvet_shkaly.IT45_power_switch = function()
        {
                trace("IT45_power_switch"+arguments);
        }

когда пытаюсь повесить обработчика
Код AS1/AS2:

_it45.addListener(IT45_TMB_V_podsvet_shkaly);

пишет что
Код AS1/AS2:

There is no method with the name 'addListener'.

тоже самое на addEventListener

Добавлено через 3 минуты
Я понимаю что код не верен, не правильно применен broadcastMessage
но не могу понять как должна выглядеть правильная структура генерации и прослушивания события

Добавлено через 4 минуты
Есть ли смысл в проекте в котором нет необходимости генерировать графику, использовать сложные компоненты и т.д. использовать AS 3.0

ведь зачем использовать мощьный инструмент если мощьности AS 2.0 должно хватить?


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

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