进阶教程计时器
计时器用户可设定时间段,点击开始后时间倒数,直到结束。本案例中用户可以设定24小时以内的任意时间值进行倒计时,开始计时后界面显示剩余时间,同时圆环显示剩余时间比例,支持开始、暂停、继续、取消操作。
实现效果
案例源文件预览amp;amp;下载:https:cloud。protopie。iopada86850ea
(需要下载源文件,源文件中有三个不同场景,对应时钟、秒表、计时器)
计时器的三个流程:设置时间计时过程中时间到达提示。
设置时间界面由常见的轮盘选择器和两个按钮组成。计时过程中,界面上半部分显示剩余时间,圆环显示剩余时间比例;下半部显示两个操作按钮。时间到达后,提示页面上半部分显示文本提示,操作按钮仅显示确定按钮。
涉及protopie功能
触发:监听、单击、联动
反应:赋值、透明度、文本、停止、颜色、旋转、排序、重置
变量:数字变量及其计算表达
实现思路
1。用户操作按钮的逻辑梳理
在计时器的三大流程(设置时间计时过程中时间到达提示)中,设置时间流程中,用户操作按钮显示开始和取消,其中取消按钮不可用。
计时开始后,操作按钮变为暂停和可用的取消按钮,用户点击暂停按钮使计时暂停及继续,同时按钮文本也会随点击在继续和暂停中进行切换。用户点击取消,本次计时操作不再进行,回到计时开始前的设置时间页面。时间到达后,页面中其他按钮消失,显示确定按钮,点击确定使计时器回到初始状态。
2。滚动选择器的实现
滚动选择器是手机端常见的一种选择器,选择器会罗列所有的选项,用户可以通过滚动拨盘确认所需要的具体项。在实现的思路上,先利用protopie中滑页容器层实现按档位的滑动效果,而后可以通过联动触发将滑页值与具体选项的值关联起来。如果滑动过程中需要进行尺寸和透明度变化使其更接近真机效果,理论上也可以通过联动层进行设置。
3。计时过程中的剩余时间记录与显示
计时器的剩余时间与之前时钟和秒表的案例正好相反,属于倒数计算,而且具体剩余时分秒数值的显示需要涉及时间单位的换算。首先将滚动选择器选定的时分秒数值统一换算成总秒数,才可以通过每秒1实现当前剩余时间计算。
然后需要将这个剩余时间再转换为时、分、秒的显示,这里利用了Protopie的数学函数floor()的取整函数。举例来说,当剩余时间为12340秒时,其中小时数为floor(123403600)3小时,分钟数为floor((1234033600)60)25分钟,秒数1234033600256040秒,可以表达为03:25:40。
4。剩余时间圆环比例的实现
在实现剩余时间的环状百分的实现上最大的难点在于Protopie中对图形描边的设置只有颜色、透明度、位置和宽度可以设置,想要实现最终效果上的环状百分比图的效果需要使用一些障眼法,对环状图进行切分后做旋转设置。
有两种思路:
(1)将黑色圆环做切割后做旋转设置。具体切割方法见下图说明将圆环不断进行对半切割,实现效果就是将1号线段先进行角度旋转后,当其旋转180度后隐藏并开始旋转2号线段,旋转90度后隐藏开始旋转3号线段,以此类推。(我实现过程中发现这种方法图层很多,管理起来太复杂基本pass这个方案,有兴趣的可以自行尝试)
(2)将黑色圆环做对半切割,左右分别做旋转设置,同时在左侧增加与背景一致的遮挡图层,使得右半侧圆环可以旋转入内,具体图层关系如下。这样图层管理更便捷,下面的具体实现步骤中使用的就是这种方法。
具体实现步骤
Step1
新建Protopie文件,实现滚动选择器及按钮的基本视效。
建立秒选择、分钟选择、小时选择三个滑页容器层,高度可以显示7个文本高度,将059、059、023的多层文本层分别放置其中。并将滑页设置如下,自定义高度为文本高度,案例中为40。由于第一个文本和最后一个文本都需要滑动到中间的位置,所以还需要在文本前后,加上段前和段后的与背景色一致的矩形,高度为3个文本高度。
Step2
实现滚动选择器的滚动渐变效果,并建立三个变量分别命名为hour、min、sec使变量与滚动选择器选择的小时、分钟、秒数关联起来。
在滚动选择器滚动过程中的渐变效果有两种实现方式:
方式一:通过联动滑页容器的滚页值与单个具体文本的透明度进行联动设置,具体设置如下,但是这个方法需要对滑页容器中每个文本进行单独设置,较为繁琐,不建议使用。
方式二:可以直接在滚页容器层上添加背景色渐变的蒙版,模拟渐变效果。
利用联动将变量hour、min、sec与滚动选择器选择的小时、分钟、秒数关联起来。由于我们自定义了每次滑页值,所以可以直接使用单条联动范围设定,对应可以直接得到整数值。实现这一步后可以开启变量显示,预览一下具体效果。
Step3
新建变量all、now,对应用户设定计时的总时长和当前剩余时长。使用户点击开始后支持计时倒数,而开始后也支持计时的暂停、继续及取消。
当用户设定的时间为0时点击开始不起效,为了进行操作判断,变量all的即用户设定的总时长最好是可以在用户滚动时可以直接进行赋值计算,所以首先对变量hour、min、sec添加监听,每次变化都对变量all进行一次赋值,表达式:(hour3600)(min60)sec。
对开始的文本添加单击触发,当文本为开始且变量all0时,对变量now进行两次赋值,首先使其等于变量all的值,而后使其0。01秒减少0。01,延迟0。01进行,这边使用0。01的时间精度使得暂停和继续不用做复杂单秒内的时间判断。
当文本为暂停时停止变量now的倒数计时;当文本为继续时重新进行每0。01秒减少0。01,延迟0。01进行的设置。
最后对这几种状况的文本内容、文本颜色、文本透明度进行设定将操作连贯起来。
Step4
将设定时间的滚动选择器隐藏,并剩余时间的数字表达和环形百分比资源导入,以实现倒计时过程中的基本视效。
数字表达中需要拆分时分秒,使用不同的文本图层。
环形百分比主要分为三部分:
运动点amp;amp;固定点,实现描边的圆角效果;
右半圆环分为底部黑色圆环和上部白色半透遮挡层(旋转180、默认透明度0);
左半圆环分为底部黑色圆环和上部白色半透遮挡层(旋转180、默认透明度90)。
由于图层关系,默认效果显示为一个黑色正圆。
Step5
新建变量ceilnow、lasth、lastm、lasts,计算具体的剩余时间,将计算时间换算并显示为具体文本,实现计时过程中数字计时部分。
由于变量now之前设置中计算精度为0。01秒,所以计算剩余时间时先要进行一次去小数点后整数进一的设置,利用ceil()表达式,并复制给变量ceilnow。
结合前文对时间换算的思考,增加对变量now的监听触发,对变量ceilnow、lasth、lastm、lasts,分别进行赋值设置。
变量ceilnowceil(now)变量lasthfloor((ceilnow3600))
变量lastmfloor((ceilnow3600lasth)60)
变量lastsceilnow3600lasth60lastm
对变量lasth、lastm、lasts添加监听,对时分秒的文本内容进行设置,使其在显示上永远显示00:00:00的六位格式。
Step6
实现倒计时过程中,环形剩余时间百分比的显示。
首先是圆环边缘圆角的小圆点的旋转设置,在对变量now的监听触发下增加运动点的旋转设置。使其旋转角度与剩余时间与设定时间的比例相关,旋转至使用表达式(nowall)360。
然后是左右半圆的旋转设置,案例中主要是对白色半透遮挡层进行旋转设置。左右半边的旋转看为两个阶段,使用条件判断后进行设置。
当变量nowall2时,增加排序的设置,将左侧半圆及其遮挡层放置于右侧半圆及遮挡层之后,右侧半圆遮挡透明度设为0,再添加左侧遮挡的旋转表达式,案例中使用的是(nowall)360180,实际的话需要结合各自使用的切图资源。
变量nowall2且0时,增加排序使得右侧半圆及其遮挡层放置于左侧之后,将右侧半圆遮挡透明度设为90,使其显示并添加与右侧一致的旋转表达式。
设置完成后测试了一下,对几个节点值再增加旋转设置以保证效果:
当变量now变量all时,即用户开始计时的时候将左右半圆的上层遮挡均设为不被遮挡。
当变量nowall2时,再做一次左右遮挡的旋转设置,使其显示为左侧完全遮挡、右侧完全显示。
变量now0且开始文本内容为暂停时,停止变量now,并且将右侧的遮挡半圆完全遮挡右侧半圈。
Step7
增加时间到!文本和确定按钮,当到达计时时间时显示出来。确认按钮支持点击操作,实现完整的操作逻辑。
增加时间到!和确定两个文本图层,监听变量now当其0且开始文本内容为暂停时,添加透明度的设置,使其显示为下面右图所示效果。
对本文确定添加点击触发,添加一个重置,使其点击后使场景重置,恢复到最初效果。
Step8
最后整体整理一下所有图层透明度关系,使页面所有元素在不同的计时阶段中下进行正常的显示及隐藏。
大功告成!!!可以直接在预览窗中查看效果
摩羯座的幸运数字是多少给摩羯座带来好运的专属数字摩羯座的幸运数字是多少:数字3受到木星影响的摩羯座们,他们的幸运数字是3。虽然摩羯座的主宰星土星会让他们在追求人生的道路上,会更加的小心谨慎,但木星却会给摩羯座们带来很多……
橱柜烤漆门板的优势和缺点教你实用选购技巧橱柜烤漆门板制作流程橱柜烤漆门板是采用中密度板做基材,经过表面砂光和四边打磨处理,然后在表面上喷漆,烤房烘烤而成。烤漆门板的制作工艺流程如下:密度板砂光打磨上封闭漆烘烤烤……
罗汉鱼会跳缸吗怎么防止罗汉鱼跳缸如果罗汉鱼受到外界刺激,就会出现跳缸的现象。比如,鱼儿受惊、环境突变、水中缺氧。这些都会对刺激到鱼儿,让它们想要逃离鱼缸。防止它们跳缸的方法有很多,最重要的是保持安静。让鱼儿生……
凤梨的贮藏特性和条件凤梨原产南美洲热带地区,广西、广东、海南、福建等为我国的主产区。凤梨生长健壮,适应性强,产量高,收益快,病虫少,是山区的主栽品种。凤梨其果实硕大多汁,肉色黄亮,有诱人的芳……
消毒水会燃火吗消毒水是我们现在经常会用到的,可以消灭很多细菌、病原体,保证身体健康。但是我们在使用消毒水的时候要注意使用方法和储存方法,有的消毒水易燃,有的则有腐蚀性,再使用的时候要注意。像……
不同类型家长沟通技巧技巧包括:引导家长主动交流、主动帮助家长进行理性分析、耐心听取家长想法、遇到问题及时向家长汇报、要面带微笑地交谈。幼儿园老师因为职业的原因,会接触到各种类型的家长,可是往……
猪儿粑糖的甜馅怎么做做猪儿粑首先要要提前一天做好肉馅,和面时糯米粉需要加适量面粉否则会太糯导致失败!相信大家在小的时候都吃过奶奶或者婆婆做的猪儿粑糖。而现在或因为读书,或因为工作,见到老人的……
高德地图常用地址怎么修改aclasstaghrefwiki10823I4FHyrb。html高德a地图的常用地址对于我们来说非常方便。今天小编就来和大家聊一聊怎么设置常用地址,修改也是一样的,所以我们……
怎么调整字的间距ps怎么aclasstaghrefwiki10028Ia0R5Wa10。html调整a字的间距?具体是如何操作的呢?下面我们就来看一下吧,希望能够帮助的大家。操作方法……
怎样在手机上设置让别人打不通电话aclasstaghrefwiki10650IQebjGU21。html每个a人,都有心情烦躁不想接别人电话的时候,或者在开会、不方便接电话,那怎么设置才能做到别人打你的电话提……
给奶汁樱桃的一封信亲爱的奶汁樱桃:你好啊!我是你的糖糖啊!樱桃,第一次给你写信,虽然之前有很多人给我们樱桃写过信,我的文笔也不是很好,所以呢,樱桃不要介意呀!首先呢,我要说说一……
风雨如歌尽管世界对你以伤痛,你也应微笑报之以歌。题记距离迈入初中大门时的我,已经快三年了,老师们的一次次教导,同学们的互帮互助令我感动不已。她,那小小的身影也同样在我的脑海……
蒸发皿的用途和注意事项化学实验要用到很多器具,下面就来介绍一下蒸发皿的用途和注意事项。操作方法01:hr蒸发皿是一种通过加热来使液体蒸发浓缩的一种化学器皿,可以放在三脚架上直接用酒精灯加……
火钳刘明是什么意思火前留名(在帖子火之前留下名字)的谐音。由于输入法的缘故,人们在输入火前的时候出现的是火钳,所以网友们为了方便,火前留名也就变成了火钳刘明。随着火钳刘明越来越多的使用,该词也常……
如何快速把水银甩下去快速把水银甩下去的方法:使用水银体温计之前,首先握住体温计的尾部,然后上下摆动,反复甩几次,直至体温计显示的温度低于35以后,方可放入腋下测量体温,这样结果会比较准确。我……
如何给文件夹设置一个密码为了工作表的内容不想被别人看到或者修改,那么我们就可以给aclasstaghrefwiki10302IQjTDS311。html文件a夹设置一个密码。操作方法如下。工具材……
如何设置发送消息快捷键aclasstaghrefwiki10196IQh0Kwf27。html操作a方法01:hr在这里小编以tim为例来教大家,普通版电脑qq操作方法是一致的,只不过具体的位……
华为荣耀手机指关节截屏局部截屏长截屏录屏aclasstaghrefwiki10610IFaS43s14。html华为a手机作为中国影响力最大的国产品牌手机,相信大家对其多多少少有一些了解。其中华为荣耀手机特点之一是截……
新冠疫苗可以帮别人预约吗新冠疫苗在接种的时候,一般都会提前在网上预约或者电话预约,网上预约需要填写个人信息,登记建档之后就可以预约了,一般除了自己预约以外,还可以帮自己的家人预约,是比较方便的。……
我爱语文书是人类进步的阶梯,是知识的源泉,是人们不可缺少的伙伴和的精神食粮。一句话,没有书,就没有未来的成功者。我生长在四川省历史文化名城临邛古城,由于年龄和家庭限制无法更多地游……
浪花点点无穷尽临望大海,波涛滚滚,无穷无尽。浪儿追逐,奔涌向前,直抵那布满金色阳光的沙滩。而这浪,何尝不似一个个人呢?在相互追赶的过程中,人们走向强大,走向成功。前浪如长,后浪如少,前……
最美乡村乡村的路上见不到柏油,黄色的土地遍布着人行过的痕迹,鱼塘里的鱼虾追逐嬉戏,树叶落下漾起一阵阵涟漪。天高云淡,似惬意,似忙碌,家乡的乡村是我心中最美的地方。白云在蓝天下显得……
假如我是一朵花假如我是一朵花,我愿意做春天的木棉花。木棉花色彩鲜艳,蓬勃向上,给人以坚实、朴素的感觉。木棉花昂立在枝头,也被人们称作英雄花,好看极了!假如我是一朵花,我愿意做那夏天的荷……
我的妈妈我有一个善变的妈妈。早晨是妈妈最温柔的时候,宝贝,该起床了每天早上7:15分妈妈的声音就像闹钟一样准时的在我耳边响起,然后她会给我一个吻。如果这个时候我还没醒的话,她的手……