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

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

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

Регистрация: Apr 2010
Сообщений: 170
По умолчанию События мышки для Sprite. Есть проблема.

Всем доброго вечера!

У меня имеется базовый класс для всех выводимых объектов:

Код AS3:
package d.game.render
{
	import d.game.map.MapObject;
	import flash.display.Bitmap;
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.Sprite;
 
	// Объект для вывода
	public class RenderObject extends Sprite
	{
		public static const STATIC_OBJECT		:uint	= 0;
		public static const DYNAMIC_OBJECT		:uint	= 1;
 
		public var type:uint=0;										// Тип объекта
		public var desc:MapObject=null;								// Описание объекта на карте
 
		// Конструктор
		public function RenderObject(_displayObject:DisplayObject)
		{
			if(_displayObject is Bitmap)
			{
				var bitmapSource:Bitmap=_displayObject as Bitmap;
				var bitmapDuplicate:Bitmap=new Bitmap(bitmapSource.bitmapData);
 
				addChild(bitmapDuplicate);
			}
			else if(_displayObject is MovieClip)
			{
				var movieClipSource:Class=Object(_displayObject).constructor as Class;
				var movieClipDuplicate:MovieClip=new movieClipSource();
 
				addChild(movieClipDuplicate);
			}
		}
 
	}
 
}
Собственно из кода видно что туда я засовываю либо рисунок (Bitmap), либо клип (MovieClip). Каждый такой класс я подписываю на события мышки:

Код AS3:
renderDynamicObject.addEventListener(MouseEvent.MOUSE_OUT,OnMouseOutDynamicObject);
renderDynamicObject.addEventListener(MouseEvent.MOUSE_OVER,OnMouseOverDynamicObject);
И вот обработка:

Код AS3:
private function OnMouseOutDynamicObject(_event:MouseEvent):void
{
	var renderDynamicObject:RenderDynamicObject=_event.currentTarget as RenderDynamicObject;
 
	renderDynamicObject.filters=null;
}
 
private function OnMouseOverDynamicObject(_event:MouseEvent):void
{
	var renderDynamicObject:RenderDynamicObject=_event.currentTarget as RenderDynamicObject;
 
	renderDynamicObject.filters=Game.mapFilter.objectFilter;
}
Если кому интересно, то RenderDynamicObject унаследован от RenderObject:

Код AS3:
package d.game.render
{
	import d.game.map.MapDynamicObject;
	import flash.display.DisplayObject;
 
	// Вывод динамического объекта
	public class RenderDynamicObject extends RenderObject
	{
		// Конструктор
		public function RenderDynamicObject(_desc:MapDynamicObject,_displayObject:DisplayObject)
		{
			type=DYNAMIC_OBJECT;
 
			desc=_desc;
			super(_displayObject);
		}
 
	}
 
}
Думаю все уже поняли что я хочу реализовать эффект подсвечивания тех объектов, на которые навели мышкой. У меня это получилось, но получилось не так как хотелось бы.

[IMG]http://i021.***********/1202/80/f917e1f7c8c8.png[/IMG]

На рисунке пугало - это Bitmap. Я мышкой ещё не навёл на объект, а он уже подсветился. Такое ощущение что он активирует наводку даже на прозрачном месте.

Как это исправить? Чтобы он тютельку в тютельку наводил.

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

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

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


 


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


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