语笑嫣然 发表于 2014-3-13 22:43:38

【审核】Update with Bangs 命令刷新

通常,Rainmeter皮肤是由写在皮肤的部分的刷新值来控制的。
在每次刷新时,所有measure和节点都被刷新——首先获得measure里的刷新值,然后用这些新的值重绘所有节点。
UpdateDivider这个值用来控制measure和节点的局部刷新率,如果有些地方想要比总刷新率慢一些,请使用它。然而,有时候你会想要皮肤的一部分或者整个皮肤都按照你的需要刷新,而不是等待固定频率的“总刷新”。这种情况通常发生在有鼠标操作,或者你要立即打开收起、悬停显示节点内容的时候。


举个例子:现在有一个Quote插件用来随机显示某个文件夹里的图片,你现在设定Quote的measure的局部刷新率为UpdateDivider=30,结合总刷新率Update=1000,那么随机更换图片的周期就是30s
但是,你想要鼠标左击图片时立刻切换成另一张图片,而不是呆呆的等着30s之后系统自动切换。
这儿提供了一些命令(bang)能帮助你实现梦想:
[*]你可以使用!Update+鼠标命令来控制整个皮肤的瞬时刷新。
LeftMouseUpAction=!Update这属于“肌肉男”方法,如果你想更新一些皮肤,这是最简单有效的。
你需要记住的是!Update命令能够无视中的Update值,但是它不能抵御measure或节点中UpdateDivider的控制。
在设计皮肤的时候你应当斟酌以上方法是否是最合适的,如果需要更合适的请看下面的命令。


[*]你可以用!UpdateMeasure 来控制一个简单的measure立即刷新。它不仅能强势碾压Update和UpdateDivider的所有设定,并且能够立即更新一个measure的值。在我们这个和Quote插件有关的例子中,这是一个非常好的解决方式。
LeftMouseUpAction=!UpdateMeasure MeasureRandomImage到目前为止一切顺利,但是如果图像节点的显示是通过measure的下一次刷新结果来确定的呢?我们利用一个新的命令可以达到目的——!UpdateMeter:LeftMouseUpAction=[!UpdateMeasure MeasureRandomImage][!UpdateMeter MeterImage]现在measure和节点的值都被刷新了。
不过,图片节点在下一次刷新之前还没有用新的值进行绘制。我们需要多加一步:!Redraw:LeftMouseUpAction=[!UpdateMeasure MeasureRandomImage][!UpdateMeter MeterImage][!Redraw]以上代码将同时刷新measure和节点,然后重新绘制整个皮肤。效果就是你点击这个节点,马上就会出现一张新的图片。
这个方法的好处是你可以用最小的代价完成你要的所有功能,并且不会打扰到拥有正常作息时间的其他皮肤。
备注:为什么我们不在捣鼓!UpdateMeter的时候自动“重绘”呢?
这是因为整个皮肤总是受到Rainmeter显示节点的方式的重绘(此处有问题:这句话什么意思?) This is because the entire skin must ALWAYS be redrawn due to how Rainmeter displays meters.
因为保持它们的独立性有助于你同时刷新几个节点,然后一次性重绘整个皮肤(此处有问题:整句话都没理解是什么意思怎么破。。。)Keeping them separate allows you to update several meters in one "action", then at the end redraw the entire skin just one time.LeftMouseUpAction=[!SetOption MeterOne FontSize 12][!SetOption MeterTwo FontSize 11][!UpdateMeter MeterOne][!UpdateMeter MeterTwo][!Redraw]
下面是这些命令在手册中的参考条目:
整个皮肤:!Update在节点下掌控整个更新的设置,能够立即刷新整个皮肤、measure和节点,这个命令在measure和节点中的优先级低于UpdateDivider!Redraw在节点下掌控整个更新的设置,能够立即重新绘制整个皮肤中的可视元素。节点将使用measure最后更新的值或者变量来显示。皮肤中的measure和节点:!UpdateMeasure在中控制整个刷新的设置,或者控制Measure中的Updatedivider,并立即刷新整个measure:!UpdateMeter在中控制整个刷新的设置,或者控制meter中的UpdateDivider,并立即刷新整个meter,在measure里得到最新的值或者变量。要注意这并不能用最新的值重绘整个meter。整个meter必须等到!Redraw命令使用之后才会更新。

下面还有一些拥有群体控制技能的命令:
整个皮肤:!UpdateGroup在中控制整个刷新的设置,然后立即更新特定小组中的皮肤、measure和节点。这个命令在节点和measure中的优先级要低于UpdateDivider:
!RedrawGroup在中控制整个刷新的设置,然后立即重绘特定小组中的节点里的所有可见元素。节点将使用最后更新的值或者变量来进行绘制。皮肤中的measure和节点:!UpdateMeasureGroup在中控制整个刷新的设置或者控制所有特定小组中measure的UpdateDivider,然后立即刷新measure:!UpdateMeterGroup在中控制整个刷新的设置或者控制所有特定小苏中meter的UpdateDivider,然后使用measure中最新的值或者变量立即刷新meter。注意meter将在!RedrawGroup命令执行之后才会重新进行绘制。

董连志 发表于 2014-3-26 10:10:01

好东西...........

lechce 发表于 2014-5-2 12:08:20

{:10_443:}
页: [1]
查看完整版本: 【审核】Update with Bangs 命令刷新