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

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

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Цитата:
Сообщение от Isfet Посмотреть сообщение
ну я писал что находил варианты как реализовать такой механизм, но там просто ставился таймер между маусдаун и маусап, если он маленький - значит это клик, а в виндоусе между маусдауном и апом может пройти хоть 10 минут(мало ли на мой объект будет кликать дама бальзаковского возраста), и он обработает его как клик.
Речь идет о Double Click?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 17.12.2013, 06:28
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 12  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
нет, об очень медленном клике, типо нажал, потупил 10 минут не сдвигая мышь и отжал.

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Цитата:
Сообщение от Isfet Посмотреть сообщение
нет, об очень медленном клике, типо нажал, потупил 10 минут не сдвигая мышь и отжал.
Так и нужно правильно называть, а не CLICK + MOUSE_DOWN. CLICK - это когда нажали на объекте мышь и на нем же ее отпустили, те MOUSE_DOWN + MOUSE_UP.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 17.12.2013, 15:30
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 14  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Это может показаться банальным, но, если не ошибаюсь, нужно это:
Код AS3:
addEventListener(MouseEvent.CLICK, OnClick);

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
насколько понял, нужно отличить драг от клика
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Point;
 
 
	public class Main extends Sprite 
	{
		private var touchP:Point;
		private var currP:Point;
		private var drag:Boolean;
		private var tol:Number = 10;
		private var body:Sprite;
 
		public function Main():void 
		{
			body = new Sprite();
			body.graphics.beginFill(0);
			body.graphics.drawRect(100, 100, 100, 40);
			addChild(body);
 
			body.addEventListener(MouseEvent.MOUSE_DOWN, body_mouseDown);
			body.addEventListener(MouseEvent.CLICK, body_click);
		}
 
		private function body_click(e:MouseEvent):void 
		{
			if (!drag)
			{
				trace("CLICK");
			}
		}
 
		private function body_mouseDown(e:MouseEvent):void 
		{
			stage.addEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
			stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUp);
			touchP = new Point(stage.mouseX, stage.mouseY);
			currP = new Point(stage.mouseX, stage.mouseY);
			drag = false;
		}
 
		private function stage_mouseUp(e:MouseEvent):void 
		{
			stage.removeEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
			stage.removeEventListener(MouseEvent.MOUSE_UP, stage_mouseUp);
		}
 
		private function stage_mouseMove(e:MouseEvent):void 
		{
 
			body.x += stage.mouseX - currP.x;
			body.y += stage.mouseY - currP.y;
 
			currP = new Point(stage.mouseX, stage.mouseY);
			if (Point.distance(currP, touchP) > tol)
			{
				drag = true;
			}
		}
 
	}
 
}
alexandrratush уже в самом начале топика сказал как

Старый 17.12.2013, 16:54
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 16  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Цитата:
виндоусе между маусдауном и апом может пройти хоть 10 минут(мало ли на мой объект будет кликать дама бальзаковского возраста), и он обработает его как клик
В виндовсе нет клика вообще. И обработкой кликов виндовс не занимается.
Событие клика формируется на уровне приложения, т.е. логически. Традиционно, обрабатываются системные уведмления WM_LBUTTONDOWN|WM_LBUTTONUP, без каких-то там таймингов. Нажали-отпустили и все. Лишь бы отпустили над кнопкой же. И будет вам клик. Медленный или быстрый клик в этом контексте вообще рассматривать не уместно. Ибо клик - он и в африке клик. Так должно быть, по крайней мере пользователю любого возраста будет понятно, что происходит, когда он тыкает мышкой по кнопкам.
Собственно, silin все уже озвучил - по DOWN запускаем DRAG (MOVE), потом в UP смотрим, был ли драг: если нет - то значит был клик .
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Point;
 
 
	public class Main extends Sprite 
	{
		private var touchP:Point;
		private var currP:Point;
		private var drag:Boolean;
		private var tol:Number = 10;
		private var body:Sprite;
 
		public function Main():void 
		{
			body = new Sprite();
			body.graphics.beginFill(0);
			body.graphics.drawRect(100, 100, 100, 40);
			addChild(body);
 
			body.addEventListener(MouseEvent.MOUSE_DOWN, body_mouseDown);
		} 
 
		private function body_mouseDown(e:MouseEvent):void 
		{
			stage.addEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
			stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUp);
			touchP = new Point(stage.mouseX, stage.mouseY);
			currP = new Point(stage.mouseX, stage.mouseY);
			drag = false;
		}
 
		private function stage_mouseUp(e:MouseEvent):void 
		{
			if (!drag)
			{
				trace("CLICK");
			}
			stage.removeEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
			stage.removeEventListener(MouseEvent.MOUSE_UP, stage_mouseUp);
		}
 
		private function stage_mouseMove(e:MouseEvent):void 
		{
 
			body.x += stage.mouseX - currP.x;
			body.y += stage.mouseY - currP.y;
 
			currP = new Point(stage.mouseX, stage.mouseY);
			if (Point.distance(currP, touchP) > tol)
			{
				drag = true;
			}
		}
 
	}
 
}

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от fljot Посмотреть сообщение
Паш, я тут подумал, что создание отдельного инстанса типа гестуре для всех заинтересованных объектов слишком расточительно, особенно для мобилки. Может где-нибудь откуда-то присылать в дисплейобжект сразу событие соответствующего типа жеста?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 18.12.2013, 16:08
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 18  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Цитата:
Сообщение от dimarik Посмотреть сообщение
Паш, я тут подумал, что создание отдельного инстанса типа гестуре для всех заинтересованных объектов слишком расточительно, особенно для мобилки. Может где-нибудь откуда-то присылать в дисплейобжект сразу событие соответствующего типа жеста?
Дабы не разводить здесь оффтоп, я в "блоге" ответил.

Старый 19.12.2013, 15:55
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 19  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
Цитата:
Сообщение от silin Посмотреть сообщение
alexandrratush уже в самом начале топика сказал как
да, то что надо, просто думал правильно ли прикручивать на маусмув проверку на смещение, думал может есть какие-нибудь еще решения. Спасибо.

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

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

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


 


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


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