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

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

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

Touch Scrolling

Запись от fljot размещена 09.12.2011 в 04:06
Обновил(-а) fljot 23.03.2012 в 20:58

Обрабатываю напильником свой менеджер для тач-скроллинга (aka кинетический, "как на айфоне").
Счастливые обладатели Android устройств, потыкайте, пожалуйста. Хорошая ли отзывчивость, ожидаемое ли поведение, не раздражает ли что.
По двойному тапу/клику появится меню с настройками:
bounce — отскакивать/оттягивать ли на краях.
allwaysBounceHorizontal — всегда ли ... в горизонтальном направлении (даже когда content width < viewport width).
allwaysBounceVertical — аналогично.
maxPull — на какое расстояние можно максимально оттянуть за край (процент от размера виюпорта в этом направлении)
maxBounce — на какое максимальное расстояние будет отскок (аналогично)
friction — некий коэффициент торможение (при броске)
directionalLock — лочит скролл в одном направлении (вертикальном или горизонтальном) аналогично http://developer.apple.com/library/i...kit/reference/...

https://www.************/s/iz56scelid...ScrollDemo.apk

Для i-девайсов по понятным причинам только swf:
https://www.************/s/r8wm18xfr5...ScrollDemo.swf

Если кому-то интересно, поделюсь деталями реализации и, наконец, исходниками.


Update (23.03.2012):
Не прошло и года, выкладываю исходники. С той поры много не правил, просто не было времени. Зато сделал "движок" под демки-примеры — на них удобно тестировать поведение.
Итак, основной функционал показан в примерах. Документация в никаком состоянии, большинство комментариев из адобовского скроллера. От вас очень полезны будут примеры использования (можете сами написать и добавить, благо гитхаб это облегчает), feature-реквесты и, конечно, непосредственно помощь в разработке.

Knows issues: см на гитхабе.

Как пользоваться демкой: выбираем пример-демку, двойной тап или хардварная кнопка меню (на андроиде) — вызов всяких настроек. Вернуться обратно в демку — кнопка в ПВУ. Кнопка в ЛВУ или хардварная кнопка назад (на андроиде) — обратно к выбору примеров.

Код: https://github.com/fljot/TouchScrolling
Скомпилированные демки: https://github.com/fljot/TouchScrolling/downloads
Всего комментариев 13

Комментарии

Старый 09.12.2011 13:14 Astraport вне форума
Astraport
 
Аватар для Astraport
Работает нормально. FPS 60 и не уменьшается. Исходники бы пригодились, спасибо.
А в новом флексе разве нет подобной кинематики скроллинга?
Кстати, желательно по умолчанию всегда ставить возможность закрытия AIR программ по кнопке "Назад", а то висят в памяти.
Старый 09.12.2011 16:05 fljot вне форума
fljot
@Astraport
Я взял от флекса хорошее: рассчёт скорости броска (через историю событий и средневзвешенное значение), идею уведомления детей о начатом скроллинге. В остальном там был полный ахтунг — жуткие жёсткие зависимости и один класс на несколько тысяч строк. Сейчас смотрю, в версии 4.6 они немного разрулили, но всё-равно:
- кинематика немного хромает.
- архитектурно всё завязано на Scroller. У меня же исключительно на IViewport.
- нет поддержки мультитача (т.е. одновременно будет работать только 1 скроллер и только с 1 пальцем, точнее мышью). У меня же сам drag/pan основан на моём проекте Gestouch, т.е. все плюшки мультитача. Плюс зависимости от других жестов. Пример: можно добивить SwipeGesture на нижнюю область (скажем, для показа какого-то меню) и установить зависимость между этим жестом и panGesture из менеджера так, чтобы panGesture мог распознаться только после того, как SwipeGesture fails. Т.е. срабатывает swipe — нету никакого скроллинга (даже чуть-чуть).

Насчёт закрытия — пофиксил, перезалил. Только вот у меня Event.DEACTIVATE почему-то при инициализации приложения появляется.. это всегда так или из-за дебаггера хм?
Старый 17.12.2011 20:40 Ivanaka вне форума
Ivanaka
 
Аватар для Ivanaka
Samsung Galaxy I
Неплохо, ниже 35 FPS не опускается. Хотелось бы опробовать библиотеку на своем проекте.
Старый 22.12.2011 00:21 ~~~ вне форума
~~~
 
Аватар для ~~~
Очень неплохо. Дай погонять исходники - дополню своими решениями.
Старый 22.12.2011 00:45 fljot вне форума
fljot
Через недельку должно появиться время — подчищу, выложу.
Старый 27.12.2011 14:27 ~~~ вне форума
~~~
 
Аватар для ~~~
Я как бы намекаю.
Старый 13.02.2012 14:10 Kursk3d вне форума
Kursk3d
да вполне достойно! только вот скорости бы сделать две разновидности! а то если контента много, вечность листать бушь!
Старый 13.02.2012 15:02 fljot вне форума
fljot
Kursk3d можно задавать "трение", т.е. разработчик может сам уменьшить его при необходимости (много контента, как вариант)
Старый 14.02.2012 10:25 Srednas вне форума
Srednas
Попробовал на компе (просто запустил SWF).
Отлично работает Но если отпустить мышь за пределами плеера — начинаются глюки: сначала фон «прилипает» к курсору, затем, после клика, пропадает инерционность, а в некоторых случаях фон совсем перестает двигаться.
Старый 14.02.2012 15:41 fljot вне форума
fljot
Srednas да, это было по части жестов — уже поправил. Всё-равно спасибо.
Старый 14.02.2012 21:19 MikroAcse вне форума
MikroAcse
 
Аватар для MikroAcse
Хоть у меня и нету Android'а, но я все же запустил этот файлик через компьютер.
Очень плавно и красиво.
Везде бы такие скроллы
Старый 15.02.2012 17:35 MikroAcse вне форума
MikroAcse
 
Аватар для MikroAcse
А вы пробовали дважды нажимать по картинке?
Появляются настройки скролла.
Старый 23.03.2012 20:54 fljot вне форума
fljot
Выложил исходники, см. update
 

 


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


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