夜色之下 发表于 2012-9-22 15:55:36

RM组概念全面解析

Rm里面有几种类别的组,他们的出现都是为了使我们更加容易控制我们的皮肤用的,用他们可以节约我们的很多的代码.节省了代码量.

下面分门别类的讲讲RM中的组,首先讲一下RM中有哪几个组类别:

1.config组(配置文件组)

我还是先讲讲什么是配置(config)吧,比如你打开一个皮肤,你右击它在最上方的就是这个皮肤的config了,一个config视为皮肤的父亲目录,就是上级目录的意思,我们右键一个皮肤选定第一行就进入了这个皮肤的文件夹,在这里面就可以看见这个文件夹里面的资源,包括我们的皮肤文件(或者称作配置文件即.ini文件)。

值得注意的是,一个config目录下面的皮肤文件如果有多个,你无法打开多个,一次只能使用其中的一个皮肤文件,你可以通过上面的切换实现配置文件(ini文件,其实ini文件也算是一个配置文件),实现切换皮肤显示的效果。

有人会问了,那么我想在一个config目录下面打开多个皮肤文件不行么?答案是可以的,你在文件夹下面另外建几个目录就是了.
好了这里进入正题.讲讲什么是配置组.

配置组,就是将一系列配置打包成一个组,实现对于配置的快速的控制。

你可以再一个皮肤的节点下面定义配置组,也可以在你的rainmeter.ini文件里面编辑你的配置组,都很简单.下面介绍这两种方案:

(1).在皮肤文件的节点下建立配置组
比如建立一个demo.ini文件里面写

Group=work1|work2

建立一个demo2.ini文件里面写

Group= work1

我们分析一下上面的语句, Group=work1|work2    这句的意思是 将demo.ini文件分配两个组 分别为work1. Work2,RM语法规定分配多个组用”|”隔开, Group= work1的意思是给demo2.ini分配一个组,work1.

(2).在rainmeter.ini文件里面进行配置组
右击你的RM托盘图标选择编辑设置,之后你在相应的皮肤节点下面写上group=xxx就是了,比如你建立了demo.ini,demo2.ini这两个文件,那么你就可以找到相应的节点(注意在rianmeter.ini文件里面配置的写法是,ROOTCONFIG\....\CURRENTCONFIG,ROOTCONFIG表示根节点配置,CURRENTCONFIG 表示当前的配置,如果你的皮肤文件就在根节点配置下面,那么你的当前配置就是你的根节点配置了),找到相应的配置之后在下面写上相应的组划分语句就是了,写法和(1)里面的一样,之后我们刷新RM就可以了

好了组划分好了,怎么对其进行控制呢?学过做皮肤的都知道怎么使用鼠标点击操作和Bang的使用吧,那么下面讲一下配置组的bang

!ToggleGroup这个用来切换config皮肤组的显示
!showgroup 显示一个组的皮肤
!hidegroup隐藏一个组的皮肤
! DeactivateConfigGroup 关闭一组皮肤
!redrawgroup 强制重绘一个组的皮肤
!SetTransparencyGroup 设置一个组皮肤的透明度
!ShowFadeGroup (Config), !HideFadeGroup (Config), !ToggleFadeGroup (Config) 设置一个组的淡入淡出效果
!DraggableGroup 设定一个皮肤组的拖动与否
!ZPosGroup 改变一个组的显示层次

差不多就这些了,通过上面的bang你可与实现对配置组的各种控制,简化代码,优化你的操作

2. Measure组
Measure组是对一组measure进行操作的,定义方式下面讲讲:
在你的皮肤文件的相应的类别为measure的节点下面写上group=xxx就是了,xxx是你定义的组的名称,定义方式很简单吧下面介绍一个例子比如:


Measure=calc
Formula=1
Group=calc|string


Measure=calc
Formula=1
Group=calc

上面的意思很简单,不多说.下面介绍几个控制measure的Bang

!DisableMeasureGroup (config) 禁止在指定组的所有measure
! EnableMeasureGroup (config) 允许在指定组的所有measure 。
!ToggleMeasureGroup (config) 切换在指定的组中的所有measure (即启用/禁用)状态。
!UpdateMeasureGroup (config) 立即更新,所有在指定组的measure ,忽略UpdateDivider 。

顺便说一下更新和刷新 概念完全不同.

3. meter组
作用也是为了方便控制,下面讲讲几个例子:
例子1:

Meter=string
…….
Group=string|work


Meter=string
…….
Group=string
意思一看就明白了吧,在meter组里面有另外几种写法可以优化减少代码,下面介绍一下

例子2


Group=string


Meter=string
Meterstyle=stringtype
……


Meter=string
Meterstyle=stringtype
……

分析一下这个例子,我们建立了一个样式表stringtype,后面引用了这个样式表,什么是样式表呢?你只要记着在这里面定义的在下面引用了之后这个样式节点下面定义的属性都可以再引用的节点下面生效就是了,在下面应用这个样式的节点还可以覆盖上面定义的样式,这个很简单自己摸索下,不扯远了,上面在样式表里面定义了一个组string,那么下面两个meter都属于string 这个组了,很简单吧,但是这个也是有缺陷的,比如你想给meter指定多个组,那么这个在样式表里面就指定不了了,因为如果在样式表节点里面写的话,那么meter这个节点也分配了多个组这不是我们想要的了,那么怎么办呢,有解决方案的,就是通过覆盖,在meter2节点下面写组就可以了,覆盖了上面样式表定义的比如:


Meter=string
Meterstyle=stringtype
Group=string|work
……
很简单是吧,其实就是这么简单!

下面讲讲meter组的几个bang
!ShowMeterGroup (config) 显示在指定的组的所有meter。!HideMeterGroup (config) 在指定的组中隐藏所有的meter。
!ToggleMeterGroup (config) 切换meter。的能见度在指定的组。
!UpdateMeterGroup (config) 立即更新指定组的所有meter的UpdateDivider 。

下面说明一下,measure里面是使用不了meterstyle的,这个可以说是一个遗憾吧,通过样式表结合组概念,再结合特殊变量其实你可以做到更好下面是一个例子:


Group=string
mouseoveraction=!execute [!showmeter #CURRENTSECTION#button][!redraw]
mouseleaveaction=!execute [!hidemeter #CURRENTSECTION#button] [!redraw]


Group=button


Meter=string
Meterstyle=stringtype
…..


Meter=string
Meterstyle=buttontype
…….

Meter=string
Meterstyle= buttontype
…….


Meter=string
Meterstyle=stringtype
…….

上面的效果是鼠标经过显示相应meter对应的button,鼠标离开隐藏,是不是节约很多代码呢?其实还有很多节约代码的编程手段,自己摸索下吧!这里就这样结束了

chenjian4414 发表于 2012-9-22 16:12:26

这个太深奥了。。。

萝莉头 发表于 2012-9-22 16:18:50

支持原创,辛苦了
希望多出一些适合新手的教程,例如怎么制作一个简单的皮肤,解决一些喜欢制作雨滴皮肤但苦于找不到门路的新人难题

vincentcdz 发表于 2012-9-22 21:53:03

受用了 谢谢!

akyouzhi 发表于 2012-9-23 14:43:49

{:10_457:}

yukm 发表于 2012-10-11 11:19:45

学习了o(∩_∩)o...哈哈!!!

wskmdf 发表于 2012-10-20 22:46:13

代码看的头有点大,不过还是得学习学习

harbery 发表于 2012-10-28 10:21:43

强烈支持楼主ing……

827527073 发表于 2012-10-30 18:29:11

看不懂额。。。不过顶一下吧

874366766 发表于 2012-10-30 19:03:54

淡定,淡定,淡定……
页: [1] 2 3 4 5
查看完整版本: RM组概念全面解析