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

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

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

Регистрация: Jun 2009
Сообщений: 461
По умолчанию Два ребенка, друг на друге. Два слушателя, на каждом. При клике срабатывают оба.

Есть большой прямоугольник, как отдельный объект, на нем есть слушатель на клик. Еще поверх него добавляю маленький прямоугольник, на котором тоже есть слушатель на клик.И когда кликаю по маленькому прямоугольнику, слушатель срабатывает и на большом и на маленьком объекте. А как сделать так чтобы при клике на маленький объект срабатывал только его слушатель, а не оба.


Последний раз редактировалось Tr1te; 27.04.2010 в 16:38.
Старый 27.04.2010, 16:23
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 2  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Чего чего? Сделать чтобы срабатывал верхний слушатель?

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

Регистрация: Jun 2009
Сообщений: 461
Есть большой прямоугольник, как отдельный объект, на нем есть слушатель на клик. Еще поверх него добавляю маленький прямоугольник, на котором тоже есть слушатель на клик.И когда кликаю по маленькому прямоугольнику, слушатель срабатывает и на большом и на маленьком объекте. А как сделать так чтобы при клике на маленький объект срабатывал только его слушатель, а не оба.

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

Регистрация: Jun 2007
Адрес: Челябинск
Сообщений: 303
Отправить сообщение для dmitriev с помощью ICQ
Код AS3:
var sprite1:Sprite = new Sprite();
sprite1.graphics.beginFill(0x000000, 1);
sprite1.graphics.drawRect(0, 0, 100, 100);
 
sprite1.x = 75;
sprite1.y = 50;
addChild(sprite1);
 
var sprite2:Sprite = new Sprite();
sprite2.graphics.beginFill(0x0000CC, 1);
sprite2.graphics.drawRect(0, 0, 200, 100);
 
sprite2.x = 100;
sprite2.y = 80;
addChild(sprite2);
 
sprite1.addEventListener(MouseEvent.CLICK, clickFirst);
sprite2.addEventListener(MouseEvent.CLICK, clickSecond);
 
function clickFirst(e:MouseEvent):void
{
	trace("click first")
}
 
function clickSecond(e:MouseEvent):void
{
	trace("click second")
}
Не выдумывайте, ничего подобного не происходит.
__________________
O God! The Aftermath.


Последний раз редактировалось dmitriev; 27.04.2010 в 16:59.
Старый 27.04.2010, 16:59
Tr1te вне форума Посмотреть профиль Отправить личное сообщение для Tr1te Найти все сообщения от Tr1te
  № 5  
Ответить с цитированием
Tr1te
 
Аватар для Tr1te

Регистрация: Jun 2009
Сообщений: 461
У меня второй является ребенком первого.

Старый 27.04.2010, 17:02
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 6  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Если они в одном контейнере (т.е. братья), то верхний перехватит событие (т.е. до нижнего не дойдет. Как и показал dmitriev.
Если они вложены друг в друга, то помогут mouseChildren на родителе или stopPropagation().


Последний раз редактировалось Волгоградец; 27.04.2010 в 17:08.
Старый 27.04.2010, 18:08
Tr1te вне форума Посмотреть профиль Отправить личное сообщение для Tr1te Найти все сообщения от Tr1te
  № 7  
Ответить с цитированием
Tr1te
 
Аватар для Tr1te

Регистрация: Jun 2009
Сообщений: 461
Спасибо всем большое.

stopPropagation() - помог.

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

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
я думаю Tr1te хочет что-то типа:
Код AS3:
package  {
 
	import flash.display.*
	import flash.events.*
	public class Main extends Sprite {
		public function Main() { 
			super();
			var sprite1:Sprite = new Sprite();
			sprite1.graphics.beginFill(0x000000, 1);
			sprite1.graphics.drawRect(0, 0, 100, 100);
 
			sprite1.x = 75;
			sprite1.y = 50;
			addChild(sprite1);
 
			var sprite2:Sprite = new Sprite();
			sprite2.graphics.beginFill(0x0000CC, 1);
			sprite2.graphics.drawRect(0, 0, 200, 100);
 
			sprite2.x = 20;
			sprite2.y = 20;
			sprite1.addChild(sprite2);
 
			sprite1.addEventListener(MouseEvent.CLICK, clickHandler);
 
			function clickHandler(e:MouseEvent):void
			{
				if (e.target == sprite1)
					trace("1 click");
				if (e.target == sprite2)
					trace("2 click");
			}
		}
	}
}
__________________
Могу ошибаться... =)

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

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

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


 


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


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