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

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

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

Регистрация: Jan 2010
Адрес: Кривой Рог
Сообщений: 117
По умолчанию Узнать, что за объект находится в точке

Добрый день! Скажите, можно ли узнать по клику на stage, что за объект находится в точке, где произведён клик (если их несколько, то самый верхний)
Код AS3:
stage.addEventListener(MouseEvent.CLICK, onClick);
//...
function onClick(event:MouseEvent):void
{
    //trace(event.stageX, event.stageY);
}

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
DisplayObjectContainer#getObjectsUnderPoint()
__________________
משיח לא בא
משיח גם לא מטלפן

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

Регистрация: Jan 2010
Адрес: Кривой Рог
Сообщений: 117
alatar, я не могу stage в DisplayObjectContainer конвертировать, он же от DisplayObject'а наследуется.

Добавлено через 6 минут
Придумал такой способ:
Код AS3:
private function hitTestNativeStage(position:Point):DisplayObject
{
	var count:uint = stage.numChildren;
	for (var i:int = count - 1; i >= 0; i--)
	{
		if (stage.getChildAt(i).hitTestPoint(position.x, position.y, true))
		{
			return stage.getChildAt(i);
		}				
	}
	return null;
}
Но не уверен, что это не долбанёт по производительности, когда объектов будет много.

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
vasya87 с чего вы это взяли? читайте про Stage в справке И даже если бы так оно и было, как вы говорите, можно было бы сделать корневой контейнер потомок DisplayObjectContainer и использовать getObjectsUnderPoint()

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

Регистрация: Feb 2009
Сообщений: 141
Все намного проще
Код AS3:
stage.addEventListener(MouseEvent.CLICK, __click);
private function __click(e:MouseEvent):void
{
	e.target //непосредственно тот объект, на котором клацнули
        e.currentTarget //подписанный объект, в нашем случае stage
}

Старый 04.10.2012, 18:39
vasya87 вне форума Посмотреть профиль Отправить личное сообщение для vasya87 Найти все сообщения от vasya87
  № 6  
Ответить с цитированием
vasya87
 
Аватар для vasya87

Регистрация: Jan 2010
Адрес: Кривой Рог
Сообщений: 117
PainKiller, что-то я жестоко протупил при чтении доков.
Vreden, так тоже хорошо, но с getObjectsUnderPoint() можно делать проверки и не по событиям мыши, более универсально так сказать)

Всё получилось. Всем спасибо!

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

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

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


 


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


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