GwithW 发表于 2017-8-29 20:55:16

快捷实现滑动效果lua脚本

大家好,之前想实现抽屉动画,但发现挺麻烦的,就查资料和参考大神的代码写了一个通用滑动动画lua脚本,带给大家。由于之前没有特别学过计算机语言,本代码可能存在各种问题,如果有bug或是建议以及改善提示,私信留言都行,很高兴和大家一起学习。在此感谢RicardoMZH,lua代码部分是从他的实例中一点点学来的。 介绍本代码文件名字为SilpElement.lua(下称“SE脚本”),主要功能可以使Rainmeter(RM)中的Meter实现滑动效果,包括改变X、Y、H、W。触发后可以实现:即时滑动,延时滑动,延时滑动后出现以及延时滑动后消失(说的不太明白,下边有动图)。写的介绍方法可能看着比较复杂,其实用起来挺简单的。 一、RM脚本准备1. 为脚本设立Measure,并写入自定义变量将SE放到预期实现效果的皮肤目录下边,在皮肤文件写入:注:如果没有指明Step,Lagtime,Order和Hide的值,将分别默认为:20,0,”cis”,0。 2. 使用SE脚本的函数
SE脚本中实现滑动效果的函数名为:Slip(),在RM中调用的具体方法如下:执行效果:鼠标左键点击指定按钮后,名称为BG的Meter,在纵坐标方向由原始值(比如50),向下滑动到150。 二、脚本需要注意的地方与不足这里需要注意:
1.多次触发可以只使用一个脚本Measure(下图中的),它们之间互不干扰:执行效果:左键点击Button1,BG沿Y轴滑动到150的位置;左键点击Button2,BG的H滑动变化到长为150的位置(其中两个“左键点击”可以分别是“左键点击”和“右键滑过”不同触发,BG也可以分别为“BG1”和“BG2”等不同Meter)。2.一次触发只能对应一个脚本Measure,若想实现一次触发达到多种滑动,只能建立多个脚本Measure(下图中的SilpElement1和SilpElement2):执行效果:左键点击Button,BG一边沿Y轴滑动到150位置,高度一边由原始值滑动改变为150(如果BG分别为BG1和BG2,那么点击后BG1沿Y轴滑动,BG2高度滑动改变)。 不足之处:本脚不能实现打包成Group的Meter的滑动效果。如果有大神能指导一下,万分感谢。 三、效果演示这里使用左键点击进行触发,由于不会Group,因此演示图片中的BG1,BG2…没有滑动,虽然能够实现一起滑动,但不利于脚本展示,就不让它们滑动了。在RM脚本中比较简单的设置就用“…….”代替了。1. 基本滑动(X,Y,W,H)RM脚本如前介绍,只需要改变X为Y/W/H任一,并相应变化其后的数值即可。2.有延迟,无隐藏滑动
其中BG1设置延迟(Lagtime=10),BG2无延迟,两者的Step都为20,即在BG2滑动10步后,BG1才开始运动,最后两者都运动到20步停止。第一个图可以看出,BG1的最终位置并没有在BG2滑动长度的一半处,是由于在这里使用的运动曲线为y=sin(x)函数(x=0~π/2),随着x的增大,y的变化率越来越小,因此BG1的滑动总量没有BG2的一半;第二个图是线性函数y=Kx+b,这时BG1在BG2滑动总量的一半处。在SE脚本中,滑动曲线由函数curse表示,这个函数可以自定义。图三是在curse为线性函数时,Meter中H的延时滑动。3.有延时,有隐藏图中两个BG1为滑动隐藏,两个BG2为正常滑动。这里的滑动曲线使用线性函数y=Kx。如果使用这项功能,Lagtime必须设置且不能大于Step。其作用为经过Lagtime后出现/隐藏;Hide也必须为1。Order也需要设置(Order=’’cis’’/’’tra’’),如果忘记设置,则默认为“cis”,经过Lagtime后隐藏。第一个图为先隐藏后滑动(Hide_Lag_show,Order=’’cis’’),其中Meter:BG1的起始Hidden=1;第二个图为先滑动后隐藏(Show_Lap_Hide,Order=’’tra’’),其中Meter:BG1的起始Hidden=0。
Hide_Lage_Show:Show_Lag_Hide:下边是自己用脚本做的一个例子,希望大家能快乐的使用。
附件中的Slip Element.lua.txt需要去掉txt才能使用








MusiCode 发表于 2017-8-30 11:49:38

支持一下 学习学习

yuxiubi 发表于 2017-9-1 14:57:06

学习学习,虽然看不懂,但是可以试试用用

雪月花 发表于 2017-9-2 14:47:48

辛苦你了,不过现在过渡动画一般都推荐使用Actiontimer.dll插件来实现。
Actiontimer.dll是Rainmeter3.3版本以上新加入的自带插件(Plugin),专门用于过渡动画效果的实现。其优点有:代码方便,不影响常态占用(即,不需要将系统整体更新率调的过快)
由于RM中文手册对应于3.2版本,所以此插件没有翻译于手册上
楼主有闲空可以参考一下
英文官方手册:https://docs.rainmeter.net/manual-beta/plugins/actiontimer/

参考皮肤:

GwithW 发表于 2017-9-3 13:56:05

雪月花 发表于 2017-9-2 14:47
辛苦你了,不过现在过渡动画一般都推荐使用Actiontimer.dll插件来实现。
Actiontimer.dll是Rainmeter3.3版 ...

嗯,谢谢,之前不知道有这个插件

chenzhe 发表于 2018-1-17 09:28:38

不错不错,感谢楼主

ns09005264 发表于 2018-2-7 19:33:49

雪月花 发表于 2017-9-2 14:47
辛苦你了,不过现在过渡动画一般都推荐使用Actiontimer.dll插件来实现。
Actiontimer.dll是Rainmeter3.3版 ...

这个插件好用,比起我之前实现动画的方式来说,这个插件没有那种bug,比如伸缩动画,伸出动画没有完成前就移开鼠标指针,缩回动画就不会触发了,换成这个插件后没这种毛病了。谢谢分享

咣咣咣就是干 发表于 2018-8-14 03:09:52

下载积分: 活跃值 -1 点

seaneo 发表于 2018-8-14 04:12:37

2.一次触发只能对应一个脚本Measure

咣咣咣就是干 发表于 2018-8-14 05:15:23

Hide_Lage_Show:
页: [1] 2 3
查看完整版本: 快捷实现滑动效果lua脚本