Показать сообщение отдельно
Старый 29.03.2011, 21:55
ShadowsInRain вне форума Посмотреть профиль Отправить личное сообщение для ShadowsInRain Найти все сообщения от ShadowsInRain
  № 1  
Ответить с цитированием
ShadowsInRain
 
Аватар для ShadowsInRain

Регистрация: Mar 2011
Сообщений: 35
По умолчанию Неадекватная область содержимого

Привет.

Заранее извиняюсь, если вопрос будет нубским. Курил мануалы и гугл, но не нашёл ничего, что бы мне помогло.

Создаю экземпляр спрайта. Очищаю. Рисую. Ловлю событие мыши. Итоговый размер спрайта получается гораздо больше, чем его визуальная часть. Это видно, если сделать его фон непрозрачным, ну и мышь, соответсно, ловится этой "лишней" областью.

Пруф:
[IMG]http://plasmon.**********/4987754.image[/IMG]

Вот ключевой код:

Код AS3:
			// это в конструкторе
			m_CaptionContainer = new Sprite();
			f_Redraw_Caption();
			...
			m_CaptionContainer.addEventListener(MouseEvent.MOUSE_MOVE, f_MouseOverCaption);
 
...
 
		protected function f_Redraw_Caption()
		{
			m_CaptionEntity.x = m_CaptionEntity.y = m_Margin - 2;
 
			var w:Number = 2 * m_Margin + m_CaptionEntity.textWidth;
			var h:Number = 2 * m_Margin + m_CaptionEntity.textHeight;
 
			m_CaptionContainer.graphics.clear();
			m_CaptionContainer.graphics.lineStyle(1, 0xFFFFFF);
			m_CaptionContainer.graphics.beginFill(0xFFFFFF, 0.35);
			m_CaptionContainer.graphics.drawRect(0, 0, w, h);
			m_CaptionContainer.graphics.endFill();
 
			m_CaptionContainer.opaqueBackground = 0xFF0000; // для дебага
		}
 
...
 
		// для дебага
		protected function f_MouseOverCaption(event:MouseEvent)
		{
			Popup.instance.text = String(event.target)
				+ "\n" + m_CaptionContainer.width + " * " + m_CaptionContainer.height;
			Popup.instance.x = x + width;
			Popup.instance.y = event.stageY;
		}
Среда разработки (вдруг это имеет значение): CS5.
За стилистику не пинайте, я всего три дня в AS3, а душу уже продал С++.