![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
|
есть следующий класс:
package { import flash.display.MovieClip; import flash.events.MouseEvent; import MyEvent; // Par - класс прописан в линкейдж символу в библиотеке, екземпляр на стейдже public class Par extends MovieClip{ private var ch1:MovieClip; private var ch2:MovieClip; public function Par(){ ch1 = getChildByName("c1") as MovieClip; ch2 = getChildByName("c2") as MovieClip; ch1.addEventListener(MouseEvent.MOUSE_DOWN, me); ch1.addEventListener(MouseEvent.MOUSE_UP , me); ch2.addEventListener(MouseEvent.MOUSE_DOWN, me); ch2.addEventListener(MouseEvent.MOUSE_UP , me); addEventListener(MyEvent.RESIZE, res); } private function res(e:MyEvent):void{ trace("resize !");} private function me(e:MouseEvent):void{ switch(e.type){ case MouseEvent.MOUSE_DOWN: e.currentTarget.startDrag(); break; case MouseEvent.MOUSE_UP: e.currentTarget.stopDrag(); // видим что width и height меняются trace(height+" : "+width); break; } } override public function set width(value:Number):void{ // а это не срабатывает - меняются без сетера??? // ...естественно при явном изменении width и height в коде все ок dispatchEvent(new MyEvent(MyEvent.RESIZE)); super.width = value; } override public function set height(value:Number):void{ dispatchEvent(new MyEvent(MyEvent.RESIZE)); super.height = value; } }} package { import flash.events.Event; public class MyEvent extends Event{ public static const RESIZE:String = "clipResize"; public function MyEvent(t:String){ super(t); } public override function toString():String { return formatToString("MyEvent"); } }} или в DisplayObjectContainer`e умудрились реализовать пересчет width и height при трансформе чайлдов тупо на приват свойствах без аккессоров?
__________________
понимание основ освобождает от необходимости запоминания тысяч фактов Последний раз редактировалось Elser; 30.03.2010 в 17:20. |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
естественно при перемещнии мувиков ширина и высота будут меняться без вызова сеттеров. Поэтому видимо, событие надо вешать на MOUSE_UP.
Вообще странная логика у вас в приложении. Объект сам создает события, сам же их и ловит... Или это для тестов?
__________________
мой пустой блог |
|
|||||
|
Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
|
да, это для тестов
если бы все было так просто, я бы и не спрашивал. дело как раз в том, что объекты могут перемещаться, ресайзиться, поворачиваться как в хендлерах мыши/клавы/таймера и тд, так и внутренним функционалом самих чайлдов так же чайлды могут изменять друг друга. и при всех этих действах надо чтобы отправлялось событие ресайза контейнера причем если допустим чайлд тащится мышей, то оно должно отправляться как будто диспатчится из MOUSE_MOVE хендлера а не только при дропе
__________________
понимание основ освобождает от необходимости запоминания тысяч фактов Последний раз редактировалось Elser; 30.03.2010 в 20:26. |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
на каждое такое действие придется создавать событие.
Ну или забить на событийную систему и повесить хендлер на ENTER_FRAME, который будет проверять не изменились ли width, height. Ну или совсем жесткий способ: Переписать width, height для MovieClip.prototype, но не уверен, поможет ли.
__________________
мой пустой блог |
|
|||||
|
Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
|
Цитата:
а когда че нибудь ресурсоемкое начинает считаться они совсем не в жилу становятся Цитата:
а приватные _width _height смысла нет трогать - они тупо переменные
__________________
понимание основ освобождает от необходимости запоминания тысяч фактов Последний раз редактировалось Elser; 30.03.2010 в 21:06. |
|
|||||
|
Цитата:
Пусть чайлды диспатчат события, а парент решает что с этим делать и масштабирует/двигает/поворачивает детей. При таком подходе не будет сложностей
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
|
чайлды - динамически подгружаемые сторонние swf написаные не мной - черный ящик
причем среди авторов попадаются товарищи которые юзают нечто типа if(parent.contains(myOtherClip)){... поэтому заварачивать их в контейнеры, которые умеют диспатчить событие тоже не вариант поэтому это не косяк а необходимость
__________________
понимание основ освобождает от необходимости запоминания тысяч фактов Последний раз редактировалось Elser; 30.03.2010 в 21:36. |
|
|||||
|
Мне кажется, что есть необходимость договариваться "как будем делать?" с коллегами...
Не поймите меня неправильно, но косяк есть - причем в архитектуре. Дети, в большинстве случаев, вообще не должны знать о других детях своего ранга. ЗЫ Цитата:
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
|
Цитата:
есть ТЗ - должны работать любые swf которые работают на веб-страницах Цитата:
тоесть вариант с контейнерами катит но тогда вопрос - как отправить событие когда чайлд ресайзится изза самотрансформации этих загруженых клипов (не юзая enterframe и timer)
__________________
понимание основ освобождает от необходимости запоминания тысяч фактов |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:16. |
|
|
« Предыдущая тема | Следующая тема » |
|
|