# 快捷实现滑动效果lua脚本 - Rainmeter插件与测试 - 雨滴社区 - Powered by Discuz!
 找回密码
 点击注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5796|回复: 28

[插件与脚本] 快捷实现滑动效果lua脚本

[复制链接]

签到天数: 16 天

[LV.4]偶尔看看III

发表于 2017-8-29 20:55:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?点击注册

x
大家好,之前想实现抽屉动画,但发现挺麻烦的,就查资料和参考大神的代码写了一个通用滑动动画lua脚本,带给大家。由于之前没有特别学过计算机语言,本代码可能存在各种问题,如果有bug或是建议以及改善提示,私信留言都行,很高兴和大家一起学习。在此感谢RicardoMZHlua代码部分是从他的实例中一点点学来的。
介绍
本代码文件名字为SilpElement.lua(下称“SE脚本”),主要功能可以使RainmeterRM)中的Meter实现滑动效果,包括改变XYHW。触发后可以实现:即时滑动,延时滑动,延时滑动后出现以及延时滑动后消失(说的不太明白,下边有动图)。写的介绍方法可能看着比较复杂,其实用起来挺简单的。
一、RM脚本准备
1. 为脚本设立Measure,并写入自定义变量
SE放到预期实现效果的皮肤目录下边,在皮肤文件写入:
1.JPG
注:如果没有指明StepLagtimeOrderHide的值,将分别默认为:200”cis”0
2. 使用SE脚本的函数

SE脚本中实现滑动效果的函数名为:Slip(),在RM中调用的具体方法如下:
2.JPG
执行效果:鼠标左键点击指定按钮后,名称为BGMeter,在纵坐标方向由原始值(比如50),向下滑动到150
二、脚本需要注意的地方与不足
这里需要注意

1.多次触发可以只使用一个脚本Measure(下图中的[SilpElement]),它们之间互不干扰:
3.JPG
执行效果:左键点击Button1BG沿Y轴滑动到150的位置;左键点击Button2BGH滑动变化到长为150的位置(其中两个“左键点击”可以分别是“左键点击”和“右键滑过”不同触发,BG也可以分别为“BG1”和“BG2”等不同Meter)。
2.一次触发只能对应一个脚本Measure,若想实现一次触发达到多种滑动,只能建立多个脚本Measure(下图中的SilpElement1SilpElement2):
4.JPG
执行效果:左键点击ButtonBG一边沿Y轴滑动到150位置,高度一边由原始值滑动改变为150(如果BG分别为BG1BG2,那么点击后BG1沿Y轴滑动,BG2高度滑动改变)。
不足之处:
本脚不能实现打包成GroupMeter的滑动效果。如果有大神能指导一下,万分感谢。
三、效果演示
这里使用左键点击进行触发,由于不会Group,因此演示图片中的BG1BG2…没有滑动,虽然能够实现一起滑动,但不利于脚本展示,就不让它们滑动了。在RM脚本中比较简单的设置就用“…….”代替了。
1. 基本滑动(XYWH
RM脚本如前介绍,只需要改变XY/W/H任一,并相应变化其后的数值即可。
5.JPG
基本滑动.gif
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,这时BG1BG2滑动总量的一半处。在SE脚本中,滑动曲线由函数curse表示,这个函数可以自定义。图三是在curse为线性函数时,MeterH的延时滑动。
6.JPG
LagMove.gif
3.有延时,有隐藏
图中两个BG1为滑动隐藏,两个BG2为正常滑动。
这里的滑动曲线使用线性函数y=Kx。如果使用这项功能,Lagtime必须设置且不能大于Step。其作用为经过Lagtime后出现/隐藏;Hide也必须为1Order也需要设置(Order=’’cis’’/’’tra’’,如果忘记设置,则默认为“cis”,经过Lagtime后隐藏。第一个图为先隐藏后滑动(Hide_Lag_showOrder=’’cis’’),其中Meter:BG1的起始Hidden=1;第二个图为先滑动后隐藏(Show_Lap_HideOrder=’’tra’’),其中Meter:BG1的起始Hidden=0

Hide_Lage_Show
7.JPG
Show_Lag_Hide
8.JPG
LagHide.gif
下边是自己用脚本做的一个例子,希望大家能快乐的使用。
example.gif

附件中的Slip Element.lua.txt需要去掉txt才能使用









动图以及文本.rar

1.01 MB, 下载次数: 21, 下载积分: 活跃值 -1 点

SlipElement.lua.txt

4.46 KB, 下载次数: 11, 下载积分: 活跃值 -1 点

售价: 1 点活跃值  [记录]

评分

参与人数 1心动值 +1 活跃值 +20 技术值 +1 收起 理由
萝莉头 + 1 + 20 + 1 谢谢分享

查看全部评分

回复

使用道具 举报

签到天数: 1 天

[LV.1]初来乍到

发表于 2017-8-30 11:49:38 | 显示全部楼层
支持一下 学习学习
回复

使用道具 举报

签到天数: 244 天

[LV.8]以坛为家I

发表于 2017-9-1 14:57:06 | 显示全部楼层
学习学习,虽然看不懂,但是可以试试用用
回复

使用道具 举报

签到天数: 145 天

[LV.7]常住居民III

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

参考皮肤:
ExamplesActionTimer.rmskin (286.72 KB, 下载次数: 23)
回复

使用道具 举报

签到天数: 16 天

[LV.4]偶尔看看III

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

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

使用道具 举报

签到天数: 109 天

[LV.6]常住居民II

发表于 2018-1-17 09:28:38 | 显示全部楼层
不错不错,感谢楼主
回复

使用道具 举报

签到天数: 31 天

[LV.5]常住居民I

发表于 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 点
回复

使用道具 举报

该用户从未签到

发表于 2018-8-14 04:12:37 | 显示全部楼层
2.一次触发只能对应一个脚本Measure
回复

使用道具 举报

该用户从未签到

发表于 2018-8-14 05:15:23 | 显示全部楼层
Hide_Lage_Show:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点击注册

本版积分规则

快速回复 返回顶部 返回列表