Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.08.2010, 14:01
inMashine вне форума Посмотреть профиль Отправить личное сообщение для inMashine Найти все сообщения от inMashine
  № 1  
Ответить с цитированием
inMashine
 
Аватар для inMashine

Регистрация: Sep 2007
Сообщений: 117
По умолчанию Что означает MouseEvent.MOUSE_OVER?

Добрый день.
Как я понимаю понимаю событие MOUSE_OVER возникает тогда, когда пользователь
наводит мышь на объект (к примеру container:Sprite).
Если же он водит мышкой, не выходя за пределы этого объекта container, то событие MOUSE_OVER не возникает.
Но если внутрь этого объекта поместиь еще какой-нибудь объект (скажем square:Sprite),
то событие MOUSE_OVER будет возникать и при наведении пользователем мышки на этот дочерний объект
(хотя по идее, так как он находится внутри спрайта container, никакого MOUSE_OVER быть не должно ).

Если кто понимает от чего так происходит - поделитесь плз.

Код, демонстрирующий данное явление (Box.as):
Код AS3:
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.
Старый 19.08.2010, 14:11
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Все верно:

- square и square2 реагируют на действия мыши
- события мыши всплывающие

Вот и выходит, что у container "тела" как такового нет и он вообще мышь не ловит — нечем!
В свою очередь square и square2 реагируют на мышь, а container лишь ловит события от обоих.

Если тебе нужно, чтобы sqare2 не реагировал на мышь:

Код AS3:
square2.mouseEnabled = false;
__________________
Поймай яблоко 2!

Старый 19.08.2010, 14:12
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Zebestov, тогда ещё и mouseChildren в false.

Старый 19.08.2010, 14:13
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 4  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
inMashine, чтобы понять достаточно посмотреть help

"Событие mouseOver отправляется каждый раз при входе мыши в область дочернего объекта контейнера экранных объектов, даже если она перешла туда с другого его дочернего объекта. Это событие имеет иную цель, в отличие от события rollOver, которое служит для упрощения кодировки поведений отката для контейнеров экранных объектов с потомками. Когда мышь переходит в область экранного объекта или его потомков с объекта, не являющегося его потомком, экранный объект отправляет событие rollOver. События rollOver отправляются последовательно вниз по родительской цепочке объекта, начиная с предка верхнего уровня, не являющимся корнем или предком объекта relatedObject, и кончая самим объектом."
__________________
low +

Старый 19.08.2010, 14:18
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 5  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
etc, в самом общем случае — да, согласен.
__________________
Поймай яблоко 2!

Старый 19.08.2010, 14:23
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Zebestov, но я бы поставил mouseChildren у родителя и всё. Или воспользовался бы ROLL_OVER.

Старый 19.08.2010, 14:30
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 7  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
etc, точно.
__________________
Поймай яблоко 2!

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:00.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.