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

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

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

Регистрация: Jan 2006
Сообщений: 103
По умолчанию Мышиные события рута, если в руте только графика

Привет.
Столкнулся с такой ситуацией.
В рут классе флэшки пишем:
Код AS3:
addEventListener(MouseEvent.CLICK, function() { trace("click"); });
graphics.beginFill(0, 1);
graphics.drawRect(0, 0, 500, 500);
graphics.endFill();
События не отправляются. Однако, если подписаться на стейдж, они есть. Если тоже самое обернуть в спрайт, тоже все хорошо, т.е. такая ситуация актуальна только для рут-спрайта. Если слушать событие в фазе захвата, его тоже нет. Есть какое-то объяснение этому?

Старый 03.02.2012, 14:58
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
да вроде бы все логично: графика сама по себе не генерит мышиных событий, их генерит Sprite (точнее InteractiveObject), в котором эта графика находится, а внутри получается нет target'а - нет и события
и да, рут-спрайт здесь не причем, это справедливо для любого спрайта - изнутри графику точно также не 'слышно'


Последний раз редактировалось silin; 03.02.2012 в 15:00.
Старый 03.02.2012, 15:01
BuKT вне форума Посмотреть профиль Отправить личное сообщение для BuKT Найти все сообщения от BuKT
  № 3  
Ответить с цитированием
BuKT
 
Аватар для BuKT

блогер
Регистрация: Dec 2010
Сообщений: 237
Записей в блоге: 5
Цитата:
Сообщение от dimarik Посмотреть сообщение
DocumentClass не слушает события мыши.
Отсюда
__________________
Дебаггер не предлагать

Старый 03.02.2012, 15:05
Timerlan вне форума Посмотреть профиль Отправить личное сообщение для Timerlan Найти все сообщения от Timerlan
  № 4  
Ответить с цитированием
Timerlan

Регистрация: Jan 2006
Сообщений: 103
О как. Спасибо.

Старый 03.02.2012, 15:22
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
имхо непонятка какая-то насчет DocumentClass'а, что-то тут мэтр попутал
любой спрайт не слушает свою графику, и не только векторную, к слову
Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
 
	public class Main extends Sprite
	{
		public function Main():void
		{
			var test:Sprite = new Test();
			addChild(test);
			test.addEventListener(MouseEvent.CLICK, test_click);
 
		}
		private function test_click(e:MouseEvent):void 
		{
			// здесь ловим
			trace( "Main.test_click > e : " + e );
 
		}
	}
}
 
import flash.display.*;
import flash.events.*;
 
class Test extends Sprite
{
 
	public function Test()
	{
		addEventListener(MouseEvent.CLICK, this_click, true);
		graphics.beginFill(0, 1);
		graphics.drawRect(0, 0, 500, 500);
		graphics.endFill();
		addChild(new Bitmap(new BitmapData(200, 200, false, 0xFF0000)));
 
	}
 
	private function this_click(e:MouseEvent):void
	{
		// здесь не ловим
		trace( "Test.this_click > e : " + e );
 
	}
}

Старый 03.02.2012, 15:27
Timerlan вне форума Посмотреть профиль Отправить личное сообщение для Timerlan Найти все сообщения от Timerlan
  № 6  
Ответить с цитированием
Timerlan

Регистрация: Jan 2006
Сообщений: 103
Хм....Забавно. Не только графику, кстати. Объект Видео тоже не слушает. Т.е. получается, что любой контейнер в котором только объекты не дающие событый, не видит собственные события внутри себя.

Старый 03.02.2012, 15:59
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
упс, извиняюсь: все правильно Мук написал про Vector graphics ignored in main-class instance
Код AS3:
public function Main():void 
{
	graphics.beginFill(0, 1);
	graphics.drawRect(0, 0, 500, 500);
	graphics.endFill();
	stage.addEventListener(MouseEvent.CLICK, stage_click);
	addChild(new Bitmap(new BitmapData(200, 200, false, 0xFF0000)));
}
 
private function stage_click(e:MouseEvent):void 
{
	// если бы рут ловил свою графику имели бы [object Main]
	// но имеем всегда [object Stage]
	trace( "e.target : " + e.target );
}
т.е. мало того, что ее изнутри не видно как у всех, рут не генерит ничего и как оболочка

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

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

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


 


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


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