Protopie进阶教程--列表滑动的操作判断

导言

本案例以列表滑动操作的速度判断为例,使你掌握在 Protopie 中进行操作判断的主要思路和多种实现方式。

具体运用场景

对于长列表来说,我们一般会增加一个回到顶部的按钮,使用户点击后能够直接回到首屏。一般情况下,回到顶部按钮是常驻的,在超出一屏时,按钮出现,用户需要时候,点击即可返回顶部。

如果说我们想要让设计比用户想得更早,就可以在列表界面在浏览超过一屏后,用户进行快速上滑时,做出预判用户有快速回到顶部的需求,这时界面才会出现回到顶部的图标按钮,点击后可以直接回到顶部。这样回到顶部按钮既不会遮挡界面显示,也可以在用户最需要的时候出现。


需要实现的效果

用户做上滑操作时,当速度满足一定条件时,页面的反馈与正常上滑的操作有所区分。

案例实现的动态效果

本案例中长列表当滑动超过一屏后,快速向上滑动则出现回到顶部的图标,点击回到顶部。

    此方案需要满足的两个判定条件:

    ○  滑动距离超过一屏

    ○  滑动速度超过X


方法一:使用Protopie的触发

最简单的方法是使用“快掷”的触发(手指快速滑动图层,达到一定速度可以出发相应动作),但是“快掷”能改变的只有滑动方向,对于具体的速度无法自定义设置。

快掷触发说明
使用快掷触发的界面设置


方法二:利用Protopie预定义变量

Protopie中有预定义获取点击后手指在屏幕上滑动的速度:

预定义变量说明

具体实现,在抬起时获取用户滑动速度(其中速度正负值表方向),并赋值给变量speed,监听speed的值,当满足speed>1500且滚页超过一屏(滚页>603)则回到顶部图标出现。这样具体有效速度的范围便是可以调整的。

使用预定义变量实现的界面设置


方法三:自定义参数计算

小爷自己算速度,具体实现步骤:

Step1:设置6个变量,分别为time(计时器);t1t2(对应下击时时间及抬起时时间);y1y2(对应下击时及抬起时鼠标或手指的在Y轴上的位置);speed对应用户的操作速度。

Step2:变量time为数字变量,添加自动加载触发后赋值time,使用循环表达式time+0.1,即使用0.1秒为最小单位(可以自己设定)进行计时。

对变量 time 赋值设置

Step3:t1t2,分别添加在下击和抬起操作下,使其等于time

Step4:y1y2,分别添加在下击和抬起操作下,用户操作位置的y,使用表达式$mouseY 

Step5:在抬起操作下进行speed计算:speed=(y2-y1)/(t2-t1) (速度的正负值表示其在y轴上的方向)

(PS若方向不做考虑可以使用abs函数,abs是取绝对值的函数去除移动方向的限制)

Step6:最后添加监听,监听speed参数,使用条件当满足speed>1500且滚页超过一屏(滚页>603)则使得回到顶部图标出现。(这样就不嫌事多的完成自己的计算)

使用自定义变量计算速度的界面设置


案例拓展--用户操作次数判断的实现

速度可以判断,那么用户连续操作的次数呢?

若要将案例中的速度变为连续操作次数的判断的话,列表当滑动超过一屏后连续两次上滑则出现回到顶部的图标,点击回到顶部。同样参考实现方案三,自己设定各个参数,做两次连续上滑操作的判断。

    需要满足的判定条件:

    ○  滑动距离超过一屏

    ○  存在两次滑动操作时间差小于1s

    ○  存在两次滑动操作的滑动方向一致

具体实现步骤:

Step1:设置6个变量,分别是time(计时器);t1t2(分别为两次操作的抬起的时间点);y1y2(分别对应下击时及抬起时鼠标的在Y轴上的位置);slidenumber对应的连续操作的次数。

Step2:其中time计时器与之前案例中一致,使用0.1秒为最小单位。

Step3:y1y2,分别添加在下击和抬起操作下,用户操作位置的y,使用表达式$mouseY,若y2-y1>0则表示操作为上滑操作。

Step4:当用户抬起操作时,若操作计数slidenumber为0则将当前的time赋值给t1;若操作计数slidenumber为1,则将当前的time赋值给t2。

不同slidenumber时的t1、t2赋值

Step5:整个连续操作计数slidenumber的计数通过监听y2的值实现。

    ○  当y2-y1>0,slidenumber=0时,将slidenumber赋值1,说明当前出现一次有效上滑操作

    ○  当t2-t1≤1,y2-y1>0,slidenumber=1时,将slidenumber赋值2,说明出现连续两次上滑操作;一秒后将slidenumber恢复到初始值0

    ○  当t2-t1>1,y2-y1>0,slidenumber=1时,说明两次操作不连贯,将slidenumber设置为1,并将t2值给到t1

    ○  当y2-y1<0时,向下滑动,将slidenumber恢复到0

对y2的监听设置

Step6:最后添加监听,监听slidenumber参数,使用条件当满足speed=2且滚页超过一屏(滚页>603),则回到顶部图标出现。

判断用户滑动次数的界面设置


案例源文件下载&预览

https://cloud.protopie.io/p/14e927bfe8

(需要下载源文件,源文件中有四个不同场景,对应“快掷”、“速度判断”*2、“次数判断”)

本篇教程作者:Annie;编辑 :JJ 


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342