|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
откуда класс "MouseEvent" берет свойство localX?
Вообщем развивая тему "Рассылка события" наткнулся на проблему.
Думаю сам писать много не буду, только суть проблемы... Вообщем, есть спрайт, в котором создаются кнопочки. Сам спрайт подписан на событие MOUSE_MOVE, и в обработчике этого события он рассылает кастомное событие которое в свою очередь содержит localX как вложенное свойство. Кнопочки подписаны на это кастомное событие и просто трейсят полученное свойство (localX). Теперь внимание, вопрос: Почему при наведении на кнопочки localX принимает значения относительно кнопки на которую мы навели, а при наведении на сам спрайт localX принимает "нормальные значения" относительно начала коорд. спрайта. Я не в полной мере понимаю модель событий в AS3 и поэтому мне не понятно, почему localX вообще берется с кнопочек, когда они не подписаны на события MOUSE... главный код: import flash.display.*; import simpleButton; import updateMenuEvent; import flash.events.MouseEvent; //////////////////// public class macMenu extends Sprite{ var canvas:Sprite = null; var temp_button:simpleButton = null; var temp_menu_el:DisplayObject = null; public function macMenu(){ addEventListener(MouseEvent.MOUSE_MOVE, updateMenu); canvas = new Sprite(); canvas.graphics.lineStyle(1, 0xAAAAAA, 100); canvas.graphics.beginFill(0xDDDDDD, 100); canvas.graphics.drawRect(0, 0, 700, 150); canvas.graphics.endFill(); this.addChild(canvas); for(var i=0; i<10; ++i){ temp_button = new simpleButton(); temp_button.set_parent_object(this); temp_menu_el = canvas.addChild(temp_button); temp_menu_el.x = i*(canvas.width/10); temp_menu_el.y = (canvas.height-temp_menu_el.height)/2; } } private function updateMenu(evt:MouseEvent){ var mouseUpdateEvent:updateMenuEvent = new updateMenuEvent(evt.localX); dispatchEvent(mouseUpdateEvent); } } import flash.display.*; import updateMenuEvent; public class simpleButton extends SimpleButton { private var upColor:uint=0xFFCC00; private var overColor:uint=0xCCFF00; private var downColor:uint=0x00CCFF; private var size:uint=50; public var parentObject:DisplayObject = null; public function simpleButton() { downState=new ButtonDisplayState(downColor,size); overState=new ButtonDisplayState(overColor,size); upState=new ButtonDisplayState(upColor,size); hitTestState=new ButtonDisplayState(upColor,size); useHandCursor=true; } public function updateButtonState(evt:updateMenuEvent){ trace(evt.x); } public function set_parent_object(target:DisplayObject){ this.parentObject = target; this.parentObject.addEventListener(updateMenuEvent.UPDATE_MENU, this.updateButtonState); } }
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
|
|
|||||
если честно, я не понял что вы хотели сказать... кнопочки не подписаны на события мыши... я понимаю, что проще хранить массив ссылок на кнопки, и каждый раз при событии MOUSE_MOVE обходить массив и вызывать нужный метод, благодаря этому не нужна будет эта запутанная система событий, но мне просто хочется понять суть проблемы, как-то неприятно когда чего-то недопонимаешь...
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... |
|
|||||
Регистрация: Oct 2007
Сообщений: 22
|
А можно узнать, в чём проблема подписывать на событие MOUSE_MOVE сами кнопочки?
|
|
|||||
Xelat, нет, мне хочется понять саму модель передачи событий, а в данном конкретном случае, как сделать так, чтобы "дети" были подписаны на событие "родителя", но при этом не искажали вложенных данных
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... |
Часовой пояс GMT +4, время: 16:36. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|