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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.05.2011, 20:16
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 11  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Ну вы и проверили. Проверяемый объект не реализовывает InEDMenu. Все работает.

Добавлено через 1 минуту
target всегда указывает на объект в котором возникло событие. В вашем случае это были внутренности объекта, который вы хотели проверить.

Старый 12.05.2011, 21:01
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 12  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вы поместили слушатель в stage, поэтому MouseEvent#currentTarget будет ссылаться на объект Stage.
Источником События был спрайт, поэтому MouseEvent#target будет ссылаться на объект Sprite.
Объект класса EDMenu находится в stage и содержит в себе спрайт. Если этому объекту запретить mouseChildren, источником События станет он сам, и Вы сможете получить на него ссылку из MouseEvent#target. Иначе, и правильно, Вы должны были добавить слушателя объекту EDMenu, а не стейджу, и получать на него ссылку как MouseEvent#currentTarget. Впрочем, запрещать mouseChildren для подобных объектов - тоже правильная практика.
__________________
Reality.getBounds(this);

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
либо перебирать массив объектов под точкой курсора, пока не наткнетесь на свой интерфейсный объект)
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Цитата:
Сообщение от cleptoman Посмотреть сообщение
либо перебирать массив объектов под точкой курсора, пока не наткнетесь на свой интерфейсный объект)
Накладно выходит.

Добавлено через 42 секунды
Ну собствеено, просто не могу всё же привести к типу данных. Создаю класс(Буттонс) имплементирую его как (к примеру) ИмБуттон, в нём создаю объкт спрайт(он же и есть кнопка). как теперь указать что этот спрайт пренадлежит классу Буттонс? Т.е. как бы я не обращался к этому спрайту он мне всегда отвечал что он кнопка.

Добавлено через 17 минут
Код AS3:
// ****************************************
public class Horizontal extends Rect implements InScroll
{
	// ..............
 
	scroll = new RoundRect();
	addChild(scroll);
	// ..............
{
 
// ****************************************
public class Main extends Sprite 
{
 
	public function Main():void 
	{
		// ..............
		var scroll:Horizontal = new Horizontal(200, 6, 0x000099);
		addChild(scroll);
		// ..............
		stage.addEventListener(MouseEvent.MOUSE_OVER, onMouse);
		// ..............
	}
 
	private function onMouse(e:MouseEvent):void 
	{
		trace(e.target);// [object RoundRect]
		trace(e.target is InScroll && e.target is Horizontal); // false
		trace(e.currentTarget is InScroll); // false
	}
 
}
// ****************************************
 
// Вот пример.
Добавлено через 25 минут
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Вы поместили слушатель в stage, поэтому MouseEvent#currentTarget будет ссылаться на объект Stage.
Источником События был спрайт, поэтому MouseEvent#target будет ссылаться на объект Sprite.
Объект класса EDMenu находится в stage и содержит в себе спрайт. Если этому объекту запретить mouseChildren, источником События станет он сам, и Вы сможете получить на него ссылку из MouseEvent#target. Иначе, и правильно, Вы должны были добавить слушателя объекту EDMenu, а не стейджу, и получать на него ссылку как MouseEvent#currentTarget. Впрочем, запрещать mouseChildren для подобных объектов - тоже правильная практика.
Вроде бы дошло. Получаеться, мне надо блокировать все объекты до нужного мне класса, тогда под точкой курсора все объекты будут ссылаться на этот класс, я правильно понял?

Добавлено через 58 минут
Код AS3:
// Собственно к чему я пришёл.
public class Main extends Sprite 
{
	private var scroll:Horizontal = new Horizontal(200, 6, 0x000099);
 
	public function Main():void 
	{
		if (stage) init();
		else addEventListener(Event.ADDED_TO_STAGE, init);
	}
 
	private function init(e:Event = null):void
	{
		removeEventListener(Event.ADDED_TO_STAGE, init);
		// entry point
 
		scroll.x = 20;
		scroll.y = 20;
 
		addChild(scroll);
 
		stage.addEventListener(MouseEvent.MOUSE_DOWN,	onMouse);
		stage.addEventListener(MouseEvent.MOUSE_UP,	offMouse);
	}
 
	private function offMouse(e:MouseEvent):void 
	{
		for (var i:int = 0; i < numChildren; i++) 
		{
			if (scroll.act) { scroll.scrollStop(); }
		}
	}
 
	private function onMouse(e:MouseEvent):void 
	{
		if (e.target == scroll) { scroll.scrollMove(); }
	}
 
}
// а хотелось задействовать интерфейс.
Добавлено через 1 час 1 минуту
Но это ппц как не правильно =(
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 13.05.2011, 15:47
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 15  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Да зачем вы на стейдж вешаете слушателей? Вам уже разжевали и намекнули.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
Цитата:
Сообщение от alatar Посмотреть сообщение
target всегда указывает на объект в котором возникло событие. В вашем случае это были внутренности объекта, который вы хотели проверить.
тут не только намекнули, но и прямым текстом сказали
__________________
low +

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Цитата:
Сообщение от GBee Посмотреть сообщение
Да зачем вы на стейдж вешаете слушателей?
Да согласен, но раз продолжаю вести тему значит пока не нашёл нужного решения.
По вашему выходит, на каждый объект вешать слушателей?

Цитата:
тут не только намекнули, но и прямым текстом сказали
Сказали ошибку а не её решение.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!


Последний раз редактировалось stweet; 13.05.2011 в 19:46.
Старый 14.05.2011, 17:35
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 18  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
stweet, отключайте mouseChildren.

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

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

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


 


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


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