![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2007
Сообщений: 117
|
Добрый день.
Как я понимаю понимаю событие MOUSE_OVER возникает тогда, когда пользователь наводит мышь на объект (к примеру container:Sprite). Если же он водит мышкой, не выходя за пределы этого объекта container, то событие MOUSE_OVER не возникает. Но если внутрь этого объекта поместиь еще какой-нибудь объект (скажем square:Sprite), то событие MOUSE_OVER будет возникать и при наведении пользователем мышки на этот дочерний объект (хотя по идее, так как он находится внутри спрайта container, никакого MOUSE_OVER быть не должно ). Если кто понимает от чего так происходит - поделитесь плз. Код, демонстрирующий данное явление (Box.as): package{ import flash.display.Sprite; import flash.geom.Point; import flash.events.*; public class Box extends Sprite{ // Document class public function Box(){ var container:Sprite = new Sprite(); var square:Sprite = new Sprite(); square.graphics.beginFill(0xFFCC00); square.graphics.drawRect(0, 0, 400, 400); var square2:Sprite = new Sprite(); square2.graphics.beginFill(0xDDCC00); square2.graphics.drawRect(0, 0, 200, 400); addChild(container); container.addChild(square); container.addChild(square2); container.addEventListener(MouseEvent.MOUSE_OVER, traceSmth); } private function traceSmth(event:MouseEvent):void{ trace("rollOver under container Sprite"); } } } Последний раз редактировалось inMashine; 19.08.2010 в 14:09. |
|
|||||
|
Lorem ipsum
|
Все верно:
- square и square2 реагируют на действия мыши - события мыши всплывающие Вот и выходит, что у container "тела" как такового нет и он вообще мышь не ловит — нечем! В свою очередь square и square2 реагируют на мышь, а container лишь ловит события от обоих. Если тебе нужно, чтобы sqare2 не реагировал на мышь:
__________________
Поймай яблоко 2! |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Zebestov, тогда ещё и mouseChildren в false.
|
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
inMashine, чтобы понять достаточно посмотреть help
"Событие mouseOver отправляется каждый раз при входе мыши в область дочернего объекта контейнера экранных объектов, даже если она перешла туда с другого его дочернего объекта. Это событие имеет иную цель, в отличие от события rollOver, которое служит для упрощения кодировки поведений отката для контейнеров экранных объектов с потомками. Когда мышь переходит в область экранного объекта или его потомков с объекта, не являющегося его потомком, экранный объект отправляет событие rollOver. События rollOver отправляются последовательно вниз по родительской цепочке объекта, начиная с предка верхнего уровня, не являющимся корнем или предком объекта relatedObject, и кончая самим объектом."
__________________
low + |
|
|||||
|
Lorem ipsum
|
etc, в самом общем случае — да, согласен.
__________________
Поймай яблоко 2! |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Zebestov, но я бы поставил mouseChildren у родителя и всё. Или воспользовался бы ROLL_OVER.
|
|
|||||
|
Lorem ipsum
|
etc, точно.
__________________
Поймай яблоко 2! |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|