【Update.dll】辅助动画效果的实现
本帖最后由 suixin812 于 2019-11-3 23:19 编辑2019年11月更新:
这个插件该废弃了。
现在Rainmeter提供更好的ActionTimer.dll来实现动画,
以及专门的!Delay指令来实现延时执行命令。
---------------------------------------------------------------------
原帖内容如下:
众所周知,任何一个动画效果,无论是平移还是渐隐,都需要10~100ms的更新频率才能流畅显示。
而这就需要设置皮肤的全局更新频率为10~100ms,但这会占用大量的系统资源。
虽然我们可以通过使用UpdateDivider来缓解这一问题,在动画结束后的静默期间调低Meter和Measure的更新频率,
但对于复杂的皮肤或者有大量图像的皮肤来说,这样仍然比较耗费系统资源。
前面提到UpdateDivider可以使皮肤局部的更新频率低于全局更新频率
((局部)Update x UpdateDivider > Update(全局))
那我们可不可以类似的使局部更新比全局更新更频繁呢?
((局部)Update / UpdateMutiplier < Update(全局))
来自Rainmeter开发团队的回答是:少年你想多了!
按照开发团队的说法,本来Rainmeter皮肤的动画效果的实现应该由一类专门的Meter实现,
这类Meter有独立于全局更新之外的更新。
(很可能是指节点下的TransitionUpdate,目前只有Bitmap类Meter使用这个选项)
根据这个想法,Update.dll通过创建一个独立的线程来实现独立于皮肤全局更新之外的更新。
假设在一个Update=1000的皮肤中有一个UpdateDivider=1的Meter,
当Update.dll设置独立的更新为Update=100,且更新这个Meter时,
每过 2 秒,
Meter被全局Update更新 2 次,
被插件的Update更新20次。
哇好好用 谢谢分享。。。。 感谢分享!{:10_431:} 不知道干嘛的 emmmmmmmm{:10_431:} 作者好 我有个问题:
官方给出的ActionTimer插件,其文档介绍时特别说明:“ActionTimer does not support, and should not be used, to do anything "endless" or otherwise of a very long duration combined with a very rapid update.”即不希望用户使用该插件给皮肤做长期性性的高频率刷新。请问你的这个插件支持长期运行吗? 感谢楼主分享 很不错,研究研究 不错,学习一下
但这会占用大量的系统资源