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

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

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

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
NewMan_by, не понял, как 2 события MOUSE_DOWN ?
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 12.10.2006, 15:00
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 12  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
MerlinTwi,

на случай если над stage есть объекты с MOUSE_UP, которые будут перекрывать MOUSE_UP сцены
cчитаю нужным немного добавить:

Код:
package {
import flash.display.Sprite;
import flash.events.*;

dynamic public class Test extends Sprite {

	function Test() {
		buttonMode=true;
		addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
	}
		
	private function onMouseDown(e:Event):void {
		stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp, true);
	}
	private function onMouseUp(e:Event):void {
		stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp, true);
		if (e.target==this) {
			trace("onRelease");
		} else {
			trace("onReleaseOutside");
		}
	}
		
}
}
еще могут быть запарки с утягиванием мышки со сцены - тогда листнер onMouseUp не будет удалён и сработает при следующем поднимании мышки над сценой... так что надо повесить на stage листнер для ещё одного события
__________________
Хороший отдых - половина работы.

Старый 12.10.2006, 15:02
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 13  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
artcraft, вроде бы MOUSE_UP срабатывает, если отпускать кнопку мыши за пределами флешки.
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 12.10.2006, 15:07
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 14  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
вроде должен, но у меня в FF не всегда
__________________
Хороший отдых - половина работы.

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

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
точнее, если утянуть мышку за пределы браузера и только там поднять кнопку
__________________
Хороший отдых - половина работы.

Старый 12.10.2006, 15:27
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 16  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
artcraft, у меня за пределами браузера тоже срабатывает. Не срабатывает, только если удерживая кнопку мыши переключить фокус на другое приложение.
Кстати, если ловить mouseUp на стадии capture, то событие не срабатывает, если отпускать мышку на пустом месте stage, где нет никаких объектов.

В результате: если добавить проверку на потерю фокуса и необязательно чтобы у кнопки стояло buttonMode=true, то проверка будет выглядеть так:
Код:
package {
	import flash.display.Sprite;
	import flash.events.*;

	dynamic public class Test extends Sprite {
		private var checkMouseUp:Boolean;

		function Test() {
			addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
			addEventListener(Event.DEACTIVATE, onDeactivate);
		}
		
		private function mouseDown(e:Event):void {
			stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
			checkMouseUp=true;
		}
		
		private function onDeactivate(e:Event):void {
			if (checkMouseUp) mouseUp(null);
		}
		
		private function mouseUp(e:Event):void {
			checkMouseUp=false;
			stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
			if (e && (e.target==this || contains(e.target))) {
				trace("onRelease");
			} else {
				trace("onReleaseOutside");
			}
		}
		
	}
}
P.S. Вот и нафига, спрашивается, надо было им убирать событие ReleaseOutside?
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

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

Регистрация: Aug 2005
Сообщений: 64
Цитата:
Сообщение от MerlinTwi
P.S. Вот и нафига, спрашивается, надо было им убирать событие ReleaseOutside?
Они просто как и мы не знали как это лучше сделать

Старый 19.10.2006, 14:43
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 18  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
Кстати, еще стоит учесть, что в методе mouseUp объект может быть уже удален с timeline и stage==null. Поэтому ссылку на stage стоит запомнить в методе mouseDown.
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 30.10.2006, 13:25
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 19  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
В дополнение нашего обсуждения, полезный совет от senocular
81. Глобальные события
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

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

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

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


 


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


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