Показать сообщение отдельно
Старый 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 минуту
Но это ппц как не правильно =(
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!