Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   В AS 3.0 нехватает типов событий. (http://www.flasher.ru/forum/showthread.php?t=152072)

fish_r 11.03.2011 12:02

В AS 3.0 нехватает типов событий.
 
... Мне так кажется. Основным Display Object'ам для большей абстракции. Я бы хотел, чтобы было событие, например, Event.Movie для того, чтобы объект мог сообразить, что его перемещают. Всё равно кто - parent-объект или пользователь. А, то паренту приходится информировать чилда, что его вот уже 15 кадров по асфальту мордой таскают :). Или например Event.Resize, для того, чтобы сообщить объекту что его размеры изменяются чем то или кем то снаружи. Такие события сделали бы объект более похожим на физические объекты реального мира. Как думаете?

Может это очевидно, да сложности с практической реализацией?

А кому, ещё каких событий не хватает?

gloomyBrain 11.03.2011 12:13

Цитата:

например, Event.Movie для того, чтобы объект мог сообразить, что его перемещают.
Для этого можно переопределить методы get x /set x, get y/set y. Равно как и с ресайзом

CrazyFlasher 11.03.2011 12:41

Код AS3:

package {
        import flash.display.DisplayObject;
        import flash.events.Event;
 
        /**
        * ...
        * @author Anton Nefjodov
        */

        public class CommonDisplayObject extends DisplayObject {
 
                public function CommonDisplayObject() {
                        super()
                }
 
                override public function set x(value:Number):void {
                        super.x = value;
 
                        dispatchEvent(new Event("move"));
                }
 
                override public function set y(value:Number):void {
                        super.y = value;
 
                        dispatchEvent(new Event("move"));
                }
 
                override public function set z(value:Number):void {
                        super.z = value;
 
                        dispatchEvent(new Event("move"));
                }
        }
 
}


fish_r 11.03.2011 13:34

Ух-ты!!! Thank's! Блин, сам бы не додумался.

Добавлено через 2 минуты
Цитата:

Сообщение от CrazyFlasher (Сообщение 979537)
Код AS3:

package {
        import flash.display.DisplayObject;
        import flash.events.Event;
 
        /**
        * ...
        * @author Anton Nefjodov
        */

        public class CommonDisplayObject extends DisplayObject {
 
                public function CommonDisplayObject() {
                        super()
                }
 
                override public function set x(value:Number):void {
                        super.x = value;
 
                        dispatchEvent(new Event("move"));
                }
 
                override public function set y(value:Number):void {
                        super.y = value;
 
                        dispatchEvent(new Event("move"));
                }
 
                override public function set z(value:Number):void {
                        super.z = value;
 
                        dispatchEvent(new Event("move"));
                }
        }
 
}


А как в вашем коде на событие подписаться?

goodguy 11.03.2011 13:44

Можно и свое событие создать, в чем проблема то? Не понимаю как их может не хватать.

Цитата:

А как в вашем коде на событие подписаться?
Зачем подписываться на событие в коде, который это событие и посылает? Очевидно, что подписываются на событие где-то в другом месте. Как обычно:

Код AS3:

someObject.addEventListener("move", doSomething, false, 0, true);


CrazyFlasher 11.03.2011 13:47

Код AS3:

commonDsiplayObject.addEventListener("move", onMove);


fish_r 11.03.2011 13:59

Цитата:

Сообщение от CrazyFlasher (Сообщение 979561)
...

Спасибо, еще раз!

CrazyFlasher 11.03.2011 14:00

2goodguy: WeakReference - зло

fish_r 11.03.2011 14:05

Цитата:

Сообщение от goodguy (Сообщение 979560)
...Зачем подписываться на событие в коде, который это событие и посылает? ...

За тем, что это событие интересует именно тот объект который его и послал, конечно.
Хотя тут, конечно, можно уже и прямо метод вызывать.... в общем, да, вы правы, это в общем то и не нужно.

Diestro 11.03.2011 14:55

Схема с переопределением сеттеров на свойства x и y не всегда поможет. В частности при использовании startDrag().


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

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