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

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

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

Регистрация: Jan 2010
Сообщений: 187
Question не работает event.stopPropagation();

Я бы хотел чтобы при клике по кнопке, клик по сцене не засчитывался
Пробовал так:
Код AS3:
package {
	import flash.display.*;
	import flash.events.*;
 
	public class Main extends MovieClip {
 
		public function Main() {
 
			var but = new Button1();
			but.x=240;
			but.y=120;
			addChild(but);
 
			but.addEventListener(MouseEvent.CLICK,ClickOnButton);
			stage.addEventListener(MouseEvent.MOUSE_DOWN,ClickOnStage);
//			stage.addEventListener(MouseEvent.CLICK,ClickOnStage);
 
		}
 
		function ClickOnButton(event:MouseEvent):void {
			event.stopPropagation();
			trace("Button");
		}
 
 
		function ClickOnStage(event:MouseEvent):void {
			trace("Stage");
		}
	}
}
Не работает.
Если раскомментить закомменченую строку - работает.
А мне нужно, чтобы работало именно с той строкой, которая сейчас - там где MOUSE_DOWN
Можно это как-нибудь побороть?

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

Регистрация: Jan 2009
Адрес: Северный островок дефолт-сити
Сообщений: 144
Не уверен, что я правильно понял суть задачи. Но сейчас всё работает так как должно работать. Вы прерываете распространение CLICK эвента, но не прерываете распространение MOUSE_DOWN эвента.
Ну самый простой способ побороть - but регестрировать не на клик а на маус_даун, и точно также прерывать. Но наверное такой вариант уже тоже был отброшен.

Старый 15.06.2010, 21:15
In8Finity вне форума Посмотреть профиль Отправить личное сообщение для In8Finity Найти все сообщения от In8Finity
  № 3  
Ответить с цитированием
In8Finity

Регистрация: Jan 2010
Сообщений: 187
В том-то и дело, что не работает так, как надо. Если код такой как сейчас, то по клику на кнопке выводятся оба трейса. Прерывание почему-тоне срабатывает.
Но я сделал как вы сказали. (сам, честно говоря, не додумался)
Поставил оба события MOUSE_DOWN и всё заработало. Спасибо.

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

Регистрация: Jan 2009
Адрес: Северный островок дефолт-сити
Сообщений: 144
Цитата:
Сообщение от In8Finity Посмотреть сообщение
В том-то и дело, что не работает так, как надо. Если код такой как сейчас, то по клику на кнопке выводятся оба трейса. Прерывание почему-тоне срабатывает.
Как я написал, как написано так и работает. Вы из первого обработчика прерываете распространение только события CLICK, а MOUSE_DOWN продолжает нормально распространяться. Это два разных события, хоть и похожих.

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

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

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


 


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


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