![]() |
|
||||||||||
|
|||||
|
Ну вы и проверили. Проверяемый объект не реализовывает InEDMenu. Все работает.
Добавлено через 1 минуту target всегда указывает на объект в котором возникло событие. В вашем случае это были внутренности объекта, который вы хотели проверить. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Вы поместили слушатель в stage, поэтому MouseEvent#currentTarget будет ссылаться на объект Stage.
Источником События был спрайт, поэтому MouseEvent#target будет ссылаться на объект Sprite. Объект класса EDMenu находится в stage и содержит в себе спрайт. Если этому объекту запретить mouseChildren, источником События станет он сам, и Вы сможете получить на него ссылку из MouseEvent#target. Иначе, и правильно, Вы должны были добавить слушателя объекту EDMenu, а не стейджу, и получать на него ссылку как MouseEvent#currentTarget. Впрочем, запрещать mouseChildren для подобных объектов - тоже правильная практика.
__________________
Reality.getBounds(this); |
|
|||||
|
либо перебирать массив объектов под точкой курсора, пока не наткнетесь на свой интерфейсный объект)
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Цитата:
Добавлено через 42 секунды Ну собствеено, просто не могу всё же привести к типу данных. Создаю класс(Буттонс) имплементирую его как (к примеру) ИмБуттон, в нём создаю объкт спрайт(он же и есть кнопка). как теперь указать что этот спрайт пренадлежит классу Буттонс? Т.е. как бы я не обращался к этому спрайту он мне всегда отвечал что он кнопка. Добавлено через 17 минут // **************************************** public class Horizontal extends Rect implements InScroll { // .............. scroll = new RoundRect(); addChild(scroll); // .............. { // **************************************** public class Main extends Sprite { public function Main():void { // .............. var scroll:Horizontal = new Horizontal(200, 6, 0x000099); addChild(scroll); // .............. stage.addEventListener(MouseEvent.MOUSE_OVER, onMouse); // .............. } private function onMouse(e:MouseEvent):void { trace(e.target);// [object RoundRect] trace(e.target is InScroll && e.target is Horizontal); // false trace(e.currentTarget is InScroll); // false } } // **************************************** // Вот пример. Цитата:
Добавлено через 58 минут // Собственно к чему я пришёл. public class Main extends Sprite { private var scroll:Horizontal = new Horizontal(200, 6, 0x000099); public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point scroll.x = 20; scroll.y = 20; addChild(scroll); stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouse); stage.addEventListener(MouseEvent.MOUSE_UP, offMouse); } private function offMouse(e:MouseEvent):void { for (var i:int = 0; i < numChildren; i++) { if (scroll.act) { scroll.scrollStop(); } } } private function onMouse(e:MouseEvent):void { if (e.target == scroll) { scroll.scrollMove(); } } } // а хотелось задействовать интерфейс. Но это ппц как не правильно =(
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
тут не только намекнули, но и прямым текстом сказали
__________________
low + |
|
|||||
|
Да согласен, но раз продолжаю вести тему значит пока не нашёл нужного решения.
По вашему выходит, на каждый объект вешать слушателей? Цитата:
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! Последний раз редактировалось stweet; 13.05.2011 в 19:46. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
stweet, отключайте mouseChildren.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 06:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|