- UID
- 374013
- 主题
- 注册时间
- 2013-7-11
- 在线时间
- 小时
- 最后登录
- 1970-1-1
签到天数: 127 天 [LV.7]常住居民III
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?点击注册
x
本帖最后由 会哭的梧桐树 于 2014-2-3 13:57 编辑
@Include指南
Tipby Brian and Smurfier
@include虽然是个简单的工具,但却同样是个功能强大的工具。利用它可以将一段很长的代码分割成多个短小的文件。在多个皮肤中重复的代码也可以被管理在一个文件中。它甚至可以在你打开皮肤时载入不同的代码。
使用@include
使用@include有一系列规则。首先是@include的声明。- [Section]
- @include=SomeFile.inc
复制代码 提示:@include必须写在一个节点下。一般皮肤的作者是直接将它写在[Rainmeter]或[Variables]节点下。
然后是你引入的文件。- [Variables]
- SomeVariable=AValue
复制代码 被引入的文件必须按照INI文件格式书写,也就是它包含有效的节点、选项和选项值。上面这个引用是引入的[Variables]节点。
如果你需要引入更多的文件,只要用不同的标识来声明就可以了。- @include=SomeFile.inc
- @include2=SomeOtherFile.inc
- @includeAnotherInclude=YetAnotherFile.inc
- ...
复制代码 虽然被引用的文件并不必须是.inc扩展名,但我们强烈建议你使用.inc扩展名,以避免文件被显示在Rainmeter的皮肤列表中。
我们同样可以在@include声明中使用变量,但注意这里不能使用动态变量。- [Variables]
- Theme=SomeTheme
- @include=#Theme#/SomeFile.inc
复制代码
理解@include
当Rainmeter读到一个@include行时,它将读取给定的文件,并将所有已经存在的节点的选项放到各自的节点中,最后将被引用文件剩余的部分直接插入到当前声明@include的节点之后。
SomeFile.inc- [Background]
- Meter=Image
- H=30
- W=40
- [String]
- Text=这行设置不会应用
- YourSkin.ini
- [Variables]
- @include=SomeFile.inc
- [Foreground]
- Meter=Image
- H=20
- W=30
- X=5r
- [String]
- Meter=String
- Text=这行设置会保留
复制代码 上面的代码会把Background节点放在Foreground节点前。因为String节点已经存在,且@include声明在String节点之前,因此String节点中任何存在的选项都不会改变。在这个例子中,Text行仍然是“这行设置会保留”。
(对于节点导入顺序以及冲突选项的处理详见手册的@include节。)
实际使用:皮肤设置
@include最常见的用法是让用户在一个单独的文件中修改某个皮肤的设置。
Setting.inc- [Variables]
- BackgroundImage=SomeImage.png
- HideBackground=0
- Skin.ini
- [Variables]
- @include=Settings.inc
- [Background]
- Meter=Image
- ImageName=#BackgroundImage#
- Hidden=#HideBackground#
复制代码 实际使用:翻页与切换样式
@include另外两个用途是可以实现皮肤的翻页和切换样式。(用MeterStyle同样可以实现,而使用MeterStyle就不需要刷新皮肤。)这两个功能的实现都得益于@include声明中可以使用变量这个前提。
首先制作不同的页面,只要把每页的内容写在单独的文件中,并把所有的文件按顺序命名。在主皮肤中我们定义一个变量来进行翻页。- [Variables]
- Page=1
- @include=Pages\PageNum#Page#.inc
复制代码 在主皮肤中我们使用!WriteKeyValue命令来改变页码。只要记住每次改变页码变量后我们需要刷新皮肤这样新的设置才会被应用。- [!WriteKeyValue Variables Page 2][!Refresh]
复制代码 实现切换样式的功能与上面完全一样。与包含很多的Meter不同,每一个样式集只要包含定义了皮肤外观的MeterStyle就可以了。
|
|