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

Akopalipsis 05.07.2013 20:59

послать событие из статического метода
 
Можно как то послать событие из статического метода?
Код AS3:

public static function test():void
{
        dispatchEvent( new Event( Event.CHANGE ) );
}


СлаваRa 05.07.2013 21:10

для этого вам нужен статический диспатчер, но честно, думается мне что это плохая идея

elder_Nosferatu 05.07.2013 21:13

Событие посылает источник (реальный екземпляр, реализующий IEventDispatcher). Если есть большая нужда, то заведите в своем класе публичное свойство, значением которого будет такой екземпляр и рассылайте события от его имени. А так как свойство будет публичным, то и подписка на событие - не проблема...

Akopalipsis 05.07.2013 21:34

Спасибо Вам! На самом деле у меня класс в котором реализован статичный метод, уже расширяет диспетчера и уже сам диспетчер создан статическим. Но без Вас бы я недодумался! Столкнулся впервые и растерялся)

Babylon 05.07.2013 21:48

А глобальный диспатчер уже не катит?

СлаваRa 05.07.2013 21:50

он на самом деле никогда не "катил"

Babylon 05.07.2013 21:51

Я согласен

Akopalipsis 06.07.2013 01:03

Цитата:

А глобальный диспатчер уже не катит?
катит, у меня как раз он и есть.
Цитата:

он на самом деле никогда не "катил"
Цитата:

Я согласен
Что это значит? Просто словесный переброс?) или вы утверждаете, что он плохой и есть что то лучше?

Babylon 06.07.2013 02:18

Лучше или хуже это вопрос зависит от того какую модель проектирования вы выбирайте. Если глобальный диспатчер, то все евенты будут пропускаться через него. Есть другие модели как например RL где используются также медиаторы.

Akopalipsis 07.07.2013 03:21

RL - это Read write lock ?
Если есть какие нибудь уроки, дайте ссылку, чтобы на деле посмотреть работу. Просто читая тяжело понять ( мне! ).

Babylon 07.07.2013 17:20

RL это Robotlegs

Bgg 07.07.2013 17:43

Цитата:

Сообщение от Akopalipsis (Сообщение 1140400)
вы утверждаете, что он плохой и есть что то лучше?

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

GlobalDispatcher.addListener(/**/)
GlobalDispatcher.removeListenerListener(/**/)

И какие-либо модули станут не переносимыми. Либо переносимыми, но тянущими за собой этот статичный класс.

Второе: придется всегда помнить что нельзя пользоваться стандартными событиями вроде Event.COMPLETE.

Babylon 07.07.2013 19:51

Конечно это будет большое ядро. Для внутренних целей это не плохо.
Ну будет писать всё в контроллере. Обертки не намного лучше, хотя и позволяют отвязать классы.

Akopalipsis 07.07.2013 21:20

Цитата:

Первое что приходит на ум это то, что весь ваш проект свяжется одним глобальным классом:
Ну если это САМОЕ ПЕРВОЕ, что приходит на ум, то значит не все так плохо)
А Robotlegs я посмотрел - это не шаблон, как я подумал сначала...
Честно сказать, я даже не знаю, как это назвать. Что это?

iNils 07.07.2013 22:13

Цитата:

Сообщение от Bgg (Сообщение 1140459)
Первое что приходит на ум это то, что весь ваш проект свяжется одним глобальным классом:
И какие-либо модули станут не переносимыми. Либо переносимыми, но тянущими за собой этот статичный класс.

Так написано, как будто это плохо. Не, это конечно будет плохо, если эти классы будут насчитаны на использование и в других проектах, или не будет плохо, если их использование подразумевает использование глобальных событий, что собственно и было написано в первом предложении, но опять же не отвечает на вопрос почему это плохо.

Цитата:

Сообщение от Bgg (Сообщение 1140459)
Второе: придется всегда помнить что нельзя пользоваться стандартными событиями вроде Event.COMPLETE.

Это почему? Глобальное событие Event.COMPLETE будет получено только теми, кто на него подписан. Какой-нибудь URLLoader его не получит.

Babylon 07.07.2013 23:15

Я тоже хотел спросить это почему, но Негуру меня опередил...


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

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