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

Вернуться   Форум Flasher.ru > Блоги > fljot

Оценить эту запись

Gestouch — работаем с жестами. Mouse/touch/multitouch.

Запись от fljot размещена 29.04.2011 в 21:43

Выложил в общее пользование:

Фреймворк (на github) http://github.com/fljot/Gestouch
Примеры (на github) http://github.com/fljot/GestouchExamples
Видео (на чуднОм английском) http://www.youtube.com/watch?v=NjkmB8rfQjY

Всё это дело довольно сыроватое пока, но уже вполне рабочее. Документация частично есть, частично в процессе. Примеров хватает.

С нетерпением жду обратной связи.
Всего комментариев 31

Комментарии

Старый 02.05.2011 14:17 Kohl вне форума
Kohl
Очень интересная работа! Если Вы не возражаете, перепостил у себя в блоге : http://flexconstructor.blogspot.com/.../gestouch.html
Что касается отсутствия резонанса по этому поводу, то это видимо, связано с праздниками, джентльмены выпивают и закусывают.
Ну и несомненно, эта тема слегка опережает время. Удачи Вам!
Старый 02.05.2011 14:30 fljot вне форума
fljot
Да это совсем не rocket-science=) У некоторых разработчиков даже есть что-то посерьёзнее, но вот открытого нет не нашёл. Потому и призываю комьюнити сплотиться.
Старый 03.05.2011 13:14 GBee вне форума
GBee
 
Аватар для GBee
Цитата:
Ну и несомненно, эта тема слегка опережает время.
По-моему тоже. Не у всех есть тачскрины :о( Но тема очень интересная.
Старый 03.05.2011 13:41 fljot вне форума
fljot
Цитата:
Не у всех есть тачскрины
Эта библиотека может быть полезной и для мыши, не так чтоб ух!, правда.
Старый 03.05.2011 13:56 GBee вне форума
GBee
 
Аватар для GBee
Хм, у меня на ноуте вроде тачпад мультитачный. Надо попробовать будет на нем.
Старый 03.05.2011 14:00 fljot вне форума
fljot
Мультитачный тачпад — ещё не значит его работа во флеше, т.к. он не работает как экран, который сечёт отдельные точки. =(
Но вот, судя по всяким видео, некоторые нативные жесты он как раз сможет передать. Смыслу в этом ноль, но факт)
Старый 29.12.2011 22:32 ~~~ вне форума
~~~
 
Аватар для ~~~
Как бы нам с тобою сплотиться и в творческом эктазе спаять расширение для Starling на основе моих (не опубликованных) разработок и твоей либы "Gestouch", ммм?
Старый 29.12.2011 22:40 fljot вне форума
fljot
@~~~
чем могу?) Что там вообще touch/mouse событиями и их диспатчерами в Starling/Stage3D?
Старый 29.12.2011 23:05 ~~~ вне форума
~~~
 
Аватар для ~~~
В Starling есть TouchProcessor, который "преобразует" нативные события от нативной сцены в starling.events.Touch, т.е. переносит координаты, вычисляет таргеты и relatedObject-ы и ещё много чего делает. На мой взгляд нежно проксировать получение событий, т.е. получать starling.events.Touch и на выходе отдавать org.gestouch.events.TransformGestureEvent к примеру.

Плюс, если использовать эту либу на мобильных девайсах, то необходимо будет всю событийную модель переколбасить на колбэки - события хреново из пямяти соллектором хаваются, сам уже заколебался профайлить. Вот.
Старый 29.12.2011 23:08 ~~~ вне форума
~~~
 
Аватар для ~~~
Кстати, не нашёл у тебя фильтрации невалидных кликов/тапов, таких как:
mouse/finger behaviour: DOWN -> MOVE -> UP for the one related object or on the one target
Старый 29.12.2011 23:26 fljot вне форума
fljot
Давай в скайп "fljot_"
Старый 07.03.2012 15:39 fljot вне форума
fljot
Зарелизил новую архитектуру. Вобрал всё лучшее от эппловского UIGestureRecognizer. Теперь нацелен на уход от завязки на InteractiveObject и поддержку чего угодно.. например Starling!
Старый 07.03.2012 16:19 nOobCrafter вне форума
nOobCrafter
спасибо, как раз скоро на старлинг попробую натянуть.
Старый 07.03.2012 16:24 fljot вне форума
fljot
nOobCrafter, готовую? или помочь хочешь?)
Старый 16.03.2012 06:27 fljot вне форума
fljot
Ну вот в первом приближении работает и с классическим дисплей листом, и со старлингом, и хоть с чем угодно=)

Топик на форуме старлинга со всеми ссылками http://forum.starling-framework.org/...ic-displaylist
Старый 27.03.2012 17:10 fljot вне форума
fljot
Вот ещё видюшка реального проекта. Imho они там много сделали криво — и что касается жестов, и вообще. Судя по видео, UX не очень гладкий выходит... Но тем не менее!

AIR interactive table for Qatari Diar by ART-EV
http://t.co/6flhFiLu #Stage3D #Alternativa3D #Starling #Gestouch
Старый 18.12.2013 16:08 fljot вне форума
fljot
Цитата:
Сообщение от dimarik Посмотреть сообщение
Паш, я тут подумал, что создание отдельного инстанса типа гестуре для всех заинтересованных объектов слишком расточительно, особенно для мобилки. Может где-нибудь откуда-то присылать в дисплейобжект сразу событие соответствующего типа жеста?
Там же половина всей пользы, что жесты привязаны к иерархии визуального списка, и таким образом решаются вопросы взаимодействия-распознавания. Если не хочешь создавать слишком много инстансов жестов — меняй таргет(1) / ставь жест на парент(2). //Далее, возможно, очевидно для тебя, но может быть полезным кому-нибудь:

1: скажем, типичная "мобильная" (тач-скриновая) галерея. Вместо навешивания TapGesture на каждый айтем (это если там нет понятия reusable item renderer'ов) или ещё чего, скажем, "свайпов" вверх (как в iOS7 https://www.google.com/search?q=ios+7+running+apps) можно иметь всего по одному-двум-трём жестам и менять у него target.

2: если у тебя много небольших, одновременно видимых на экране элементов, которым всем требуется один и тот же жест — можно попробовать добавить его на контейнер, и далее определять, с каким визуальным объектом мы взаимодействуем через gesture.location(:Point)

А вообще с чего такое замечание взялось? Много работы для GC? Много занимают памяти жесты? Долго обрабатываются, когда их много?
Старый 10.01.2014 14:06 Cybo вне форума
Cybo
У меня возникла проблема с тач-моником и TransformGesture.
Ситуация такая: подключено 2 моника, один из них тач-скриновый. Проект написан на старлинге, AIR 3.9 для iPad2, 3 (на планшетах всё ок). На компе (Windows 8) мышь обрабатывается хорошо, TapGesture(this) - хорошо, а вот TransformGesture(this) на GESTURE_BEGAN, GESTURE_ENDED и GESTURE_CHANGED никак не реагирует. Я допускаю, что могут конфликтовать AIR и тач-моник, но может это известный баг?

PS: И ещё, вываливается эксепшен на строчке из доки Gestouch.inputAdapter ||= new NativeInputAdapter(stage);
TypeError: Error #1034: Type Coercion failed: cannot convert to org.gestouch.core.IInputAdapter.
Старый 10.01.2014 15:53 fljot вне форума
fljot
@Cybo

Новый сырой компилятор не понимает "Mario Mushroom Operator" ||=
так что нужно писать полную запись. Здесь выяснилось и обсуждалось.

TransformGesture должен работать и с одним тачем (читай: мышкой)
https://github.com/fljot/Gestouch/bl...esture.as#L150
может он отменяется каким-то другим жестом? Рекомендую послушать GESTURE_STATE_CHANGE и посмотреть что к чему.

К слову, раз имеется два моника с мышой и с тачем —*было б здорово, чтоб ты попробовал явно указать, что нужно слушать и TouchEvent, и MouseEvent:
Код AS3:
if (Gestouch.inputAdapter && Gestouch.inputAdapter is NativeInputAdapter)
{
    (Gestouch.inputAdapter as NativeInputAdapter).onDispose();//через попу всё пока, я почему-то не внёс это в интерфейс
}
Gestouch.inputAdapter = new NativeInputAdapter(stage, true, true);//вот эти два true говорят слушать оба типа input событий
Старый 10.01.2014 17:46 Cybo вне форума
Cybo
Выяснилось: AIR 3.8 - работает правильно.
На счёт мушрума - спасибо
Старый 10.01.2014 19:51 fljot вне форума
fljot
А в чём конкретно беда с AIR 3.9? А то мне ещё в одном месте жаловались, но ничего внятного сказать не смогли.
Старый 11.01.2014 00:14 dimarik вне форума
dimarik
 
Аватар для dimarik
Паш, решил попробовать собрать под заинтересованных слушателей без инстансов гестуре. Получилось так:
Код AS3:
InteractiveObject#swipe.addEventListener(flash.event.Event.COMPLETE, handler);
InteractiveObject#swipe.orientation = SwipeOrientation.ALL;
InteractiveObject#swipe.minimalЧто-Нибудь = валуе;
InteractiveObject#swipe.конфигЕще-Чего-Нибудь = валуе2;
Такой подход как оценишь?
Сам InteractiveObject#swipe вроде как инстанс, но хотелось бы перенаправить его на статик с последующей делегацией в простецкий конфиг-DTO инстанса этого InteractiveObject. Заморочек много, но я тут больше наблюдатель, чем практик.

А вообще, я бы хотел как-то стандартизировать существующие методы pointer-interaction, сильно не разделяя mouse/trackball и пальцы/стилус. Прошу прощения за сумбурность, вопрос свербит в мозжечке, но "щелчка" в голове до сих пор нет.
Обновил(-а) dimarik 11.01.2014 в 00:32
Старый 11.01.2014 02:35 fljot вне форума
fljot
@dimarik

блин вообще круто) в хаксе через using, например?
но иногда могут понадобиться два жеста одного типа: тап и дабл-тап (их взаимодействие: https://github.com/fljot/GestouchExa...sView.mxml#L36) и нужно оставить какую-то возможность "дефайнить" новые.

И да, я же тоже давно хотел бы так, ради фана. Только даже не просто "сильно не разделяя", а "+ универсально для разных систем отрисовки (native/Stage3D). Перенести iOS систему + пару улучшений от event системы чтоли, как-то так примерно. Вот начал читать хакс, думаю сразу на нём + либа для хакса получился + вывод в js для расширения интереса к проекту может. Присоединяйся, может)
Старый 11.01.2014 04:18 fljot вне форума
fljot
Старый 13.01.2014 12:09 Cybo вне форума
Cybo
Цитата:
А в чём конкретно беда с AIR 3.9?
Перестаёт реагировать на жесты. Срабатывает только двойной тап, и то, все параметры (scale, offset, rotation) начинают изменяться хаотично. При всём при этом, touchesCount = 2, хотя было касание одним пальцем. Тестировал TransformGesture.
Старый 16.01.2014 16:35 Cybo вне форума
Cybo
Ещё из обнаруженного...
Когда устанавливаешь флаги для мышки:
Код AS3:
Gestouch.inputAdapter = new NativeInputAdapter( stage, true, true );
Иногда, касание одного пальца, распознаётся как касание двумя: touchesCount = 2.
Старый 16.01.2014 18:24 Cybo вне форума
Cybo
Перекомпилил в AIR 4.0 - пропала беда, наблюдаемая в AIR 3.9.
Старый 27.01.2014 17:41 Cybo вне форума
Cybo
Что-то я в растерянности...
У меня есть кнопка, поверх карты. На карту повешен TransformGesture для скролирования карты. Когда опускаю палец на кнопку, и вожу по кнопке, карта скролится.
Подскажите как отключить скрол на кнопке?
Старый 27.01.2014 22:18 fljot вне форума
fljot
А кнопка mouseEnabled == mouseChildren == false чтоли? Или она всё-таки внутри карты?
Старый 30.01.2014 14:05 Cybo вне форума
Cybo
У кнопки, mouseChildren == false, кроме контейнера, в котором всё её содержимое лежит.
Я слушаю события этого контейнера.
Под кнопкой у меня лежит карта, на которую я вешаю TransformGesture.
Покопался, и понял, что кнопка у меня работает на старлинговских событиях, а карта на TransformGesture. Может быть в этом проблема. И ещё заметил, что TransformGesture раньше обрабатывает событие GESTURE_BEGAN, чем кнопка обработает свой BEGAN.
Старый 31.01.2014 16:54 fljot вне форума
fljot
Да, старлинговый инпут и мой — разные штуки и друг на друга не влияют. Не буду сейчас вдаваться в подробности, но легче (и лучше) мне дописать свой обобщённый инпут для всего-всего (читай выше), чем завязываться с каким-нибудь старлингом.
Я так и не понял, кто-где-в-ком лежит.
Если кнопка сверху карты — то кнопка (или её содержимое) должны стать (Gestouch)Touch.target, и таким образом жест на карте не должен ничего получить.
Мини-пример чтоли выложи — посмотрю.
 

 


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


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