![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Oct 2007
Сообщений: 45
|
Добрый день всем.
Возникла такая проблема - делаю туториал для игры. Чтобы залочить все элементы интерфейса - сделал прозрачный MovieClip, на который повесил листнер на все основные события мыши. Соответственно в обработчике проверяю какое действие разрешено и вызываю событие для необходимых объектов. Есть класс - игровое поле, который обрабатывает событие мыши - и по координатам вычисляет положение строящегося здания. Для расчетов используется event.stageX Прозрачная заслонка имеет меньшие размеры, чем игровое поле. По событию мыши я просто делаю вызов public function mouseEventDispatcher(event:MouseEvent = null){ _city.dispatchEvent(event); } Почему stageX и stageY отличаются при срабатывании события на разных объектах? Причем пересоздать event с новыми stageX и stageY не получится. Может кто подскажет что можно в данном случае придумать? как поменять у события target я тоже так и не понял, хотя мне кажется, что именно от target все и зависит. |
|
|||||
|
интересная штука получается
и вот ведь что удивительно: localX передиспатченного события совпадает со stageX оригинального о_О public class Main extends Sprite { private var child:Sprite = new Sprite(); public function Main():void { child.graphics.beginFill(0xC0C0C0); child.graphics.drawRect(0, 0, 200, 200); //child.scaleX = 0.5; child.x = 200; addChild(child); child.addEventListener(MouseEvent.CLICK, child_click); stage.addEventListener(MouseEvent.CLICK, stage_click); } private function stage_click(e:MouseEvent):void { trace("Main.stage_click > e.stageX : " + e.stageX); child.dispatchEvent(e); } private function child_click(e:MouseEvent):void { trace("Main.child_click > e.localX : " + e.localX); trace("Main.child_click > e.stageX : " + e.stageX); e.stopPropagation(); } } по простому stage.mouseX, не ? |
|
|||||
|
Регистрация: Oct 2007
Сообщений: 45
|
Цитата:
А вообще - удивительно, получается действительно, у клонов событий мыши координаты стейджа отличаются от оригинала. Как будто у этих событий разные стейджи. Цитата:
Разобрался с проблемой. Всем спасибо за помощь! Последний раз редактировалось dimarik; 24.08.2011 в 11:38. Причина: Избыточное цитирование |
|
|||||
|
stageX Горизонтальная координата события в глобальных координатах рабочей области.
То есть вы получаете координаты не в зависимости на чём кликнули, а в зависимости от того где. У события "таргет" менять не получится. Да это и не нужно, по определению. Что то криво с архитектурой если вы нуждаетесь в такой возможности. |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:08. |
|
|
« Предыдущая тема | Следующая тема » |
|
|