2014-11-09 1 views
0

Charles B разместил интересную альтернативу родному скроллеру на Android с помощью LiveCode. Его код можно найти здесь: Scrolling in iphone and android devices in LiveCode (и я воспроизведу его код внизу этого сообщения)Добавить инерцию в неродной Android скроллер (Livecode)

Это действительно работает; однако нет инерции. Другими словами, когда вы удаляете палец, прокрутка останавливается на своем пути. Мне интересно, может ли изменение его кода обеспечить некоторую инерционную прокрутку - возможно, какой-то таймер добавлен в обработчики mouseRelease или mouseUp?

Хотя я знаю, что это не официальный метод, предоставляемый LiveCode (это не «родной» скроллер), это, безусловно, оснастка для реализации и, по сути, это первый примерный код, который действительно работал для меня с точки зрения прокручивая весь путь до конца моего предоставленного текста. Если бы я мог добавить инерционную прокрутку, это было бы потрясающе.

Спасибо,

Barry

local allowMove 
 

 
on mouseDown 
 
    put mouseH(),mouseV() into allowMove 
 
end mouseDown 
 

 
on mouseMove X,Y 
 
    if allowMove is not empty then 
 
     lock screen 
 
     if the hScrollbar of me then 
 
     set the hScroll of me to the hScroll of me + (item 1 of allowMove-X) 
 
     end if 
 
     if the vScrollbar of me then 
 
     set the vScroll of me to the vScroll of me + (item 2 of allowMove-Y) 
 
     end if 
 
     put X into item 1 of allowMove 
 
     put Y into item 2 of allowMove 
 
     unlock screen 
 
    end if 
 
end mouseMove 
 

 
on mouseUp 
 
    put empty into allowMove 
 
end mouseUp 
 

 
on mouseRelease 
 
    mouseUp 
 
end mouseRelease

ответ

0

инерционный тип эффекта можно достичь с помощью некоторых повторяющихся циклов в обработчике MouseUp.

local allowMove, sScrollPos 

on mouseDown 
    put mouseH(),mouseV() into allowMove 
    put the vScroll of me into sScrollPos 
end mouseDown 

on mouseMove X,Y 
    if allowMove is not empty then 
     lock screen 
     if the hScrollbar of me then 
      set the hScroll of me to the hScroll of me + (item 1 of allowMove-X) 
     end if 
     if the vScrollbar of me then 
      set the vScroll of me to the vScroll of me + (item 2 of allowMove-Y) 
     end if 
     put X into item 1 of allowMove 
     put Y into item 2 of allowMove 
     unlock screen 
    end if 
end mouseMove 

on mouseUp 

    put the vScroll of me into tVscroll 

    if tVscroll > sScrollPos then 
     put "down" 
     repeat with x = 1 to 20 
     set the vScroll of me to the vScroll of me + (20-x) 
     end repeat 
    end if 
    if tVscroll < sScrollPos then 
     put "up" 
     repeat with x = 1 to 20 
     set the vScroll of me to the vScroll of me - (20-x) 
     end repeat 
    end if 
     if tVscroll = sScrollPos then 
     put "same" 
    end if 

    put empty into allowMove 
end mouseUp 

on mouseRelease 
    mouseUp 
end mouseRelease 

В основном на MouseUp, то VScroll поля создается его vScorll +/- постоянно уменьшающийся значным определенно в различных повторяющихся циклах .. Я также добавил немного отладки, который говорит вам если свиток вверх, вниз или остается тем же.

Значения в цикле повторения можно изменить, чтобы дать эффект более или менее драматического инерции