找回密码
 点击注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4129|回复: 12

【审核】@include Guide @Include指南

[复制链接]

签到天数: 127 天

[LV.7]常住居民III

发表于 2014-1-30 22:57:20 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 会哭的梧桐树 于 2014-2-3 13:57 编辑

@Include指南
Tipby Brian and Smurfier

@include虽然是个简单的工具,但却同样是个功能强大的工具。利用它可以将一段很长的代码分割成多个短小的文件。在多个皮肤中重复的代码也可以被管理在一个文件中。它甚至可以在你打开皮肤时载入不同的代码。

使用@include
使用@include有一系列规则。首先是@include的声明。
  1. [Section]
  2. @include=SomeFile.inc
复制代码
提示:@include必须写在一个节点下。一般皮肤的作者是直接将它写在[Rainmeter][Variables]节点下。
然后是你引入的文件。
  1. [Variables]
  2. SomeVariable=AValue
复制代码
被引入的文件必须按照INI文件格式书写,也就是它包含有效的节点、选项和选项值。上面这个引用是引入的[Variables]节点。
如果你需要引入更多的文件,只要用不同的标识来声明就可以了。
  1. @include=SomeFile.inc
  2. @include2=SomeOtherFile.inc
  3. @includeAnotherInclude=YetAnotherFile.inc
  4. ...
复制代码
虽然被引用的文件并不必须是.inc扩展名,但我们强烈建议你使用.inc扩展名,以避免文件被显示在Rainmeter的皮肤列表中。
我们同样可以在@include声明中使用变量,但注意这里不能使用动态变量。
  1. [Variables]
  2. Theme=SomeTheme
  3. @include=#Theme#/SomeFile.inc
复制代码

理解@include

当Rainmeter读到一个@include行时,它将读取给定的文件,并将所有已经存在的节点的选项放到各自的节点中,最后将被引用文件剩余的部分直接插入到当前声明@include的节点之后。
SomeFile.inc
  1. [Background]
  2. Meter=Image
  3. H=30
  4. W=40

  5. [String]
  6. Text=这行设置不会应用

  7. YourSkin.ini
  8. [Variables]
  9. @include=SomeFile.inc

  10. [Foreground]
  11. Meter=Image
  12. H=20
  13. W=30
  14. X=5r

  15. [String]
  16. Meter=String
  17. Text=这行设置会保留
复制代码
上面的代码会把Background节点放在Foreground节点前。因为String节点已经存在,且@include声明在String节点之前,因此String节点中任何存在的选项都不会改变。在这个例子中,Text行仍然是“这行设置会保留”。
(对于节点导入顺序以及冲突选项的处理详见手册的@include节。)


实际使用:皮肤设置
@include最常见的用法是让用户在一个单独的文件中修改某个皮肤的设置。
Setting.inc
  1. [Variables]
  2. BackgroundImage=SomeImage.png
  3. HideBackground=0

  4. Skin.ini
  5. [Variables]
  6. @include=Settings.inc

  7. [Background]
  8. Meter=Image
  9. ImageName=#BackgroundImage#
  10. Hidden=#HideBackground#
复制代码
实际使用:翻页与切换样式
@include另外两个用途是可以实现皮肤的翻页和切换样式。(用MeterStyle同样可以实现,而使用MeterStyle就不需要刷新皮肤。)这两个功能的实现都得益于@include声明中可以使用变量这个前提。
首先制作不同的页面,只要把每页的内容写在单独的文件中,并把所有的文件按顺序命名。在主皮肤中我们定义一个变量来进行翻页。
  1. [Variables]
  2. Page=1
  3. @include=Pages\PageNum#Page#.inc
复制代码
在主皮肤中我们使用!WriteKeyValue命令来改变页码。只要记住每次改变页码变量后我们需要刷新皮肤这样新的设置才会被应用。
  1. [!WriteKeyValue Variables Page 2][!Refresh]
复制代码
实现切换样式的功能与上面完全一样。与包含很多的Meter不同,每一个样式集只要包含定义了皮肤外观的MeterStyle就可以了。




回复

使用道具 举报

签到天数: 368 天

[LV.9]以坛为家II

发表于 2014-2-1 09:47:06 | 显示全部楼层
我是来说题外话的。。
“如果你需要引入更多的文件,只要用不同的标识来声明就可以了。
@include=SomeFile.inc
@include2=SomeOtherFile.inc
@includeAnotherInclude=YetAnotherFile.inc”

这边我去试了一下,发现@include后加中文也行,比如“@include囧囧无力=囧爷是攻.txt”也能被识别=0=以前以为只能加阿拉伯数字呢。。
回复

使用道具 举报

签到天数: 187 天

[LV.7]常住居民III

发表于 2014-2-1 11:42:21 来自雨滴社区iPhone客户端 | 显示全部楼层
其摆放顺序对皮肤的影响,比如放在最尾就是最后读取。不同的代码顺序对执行速度也不同————来自某蜜蜂的建议
回复

使用道具 举报

签到天数: 392 天

[LV.9]以坛为家II

发表于 2014-2-1 14:50:26 | 显示全部楼层
花花说的很对。
回复

使用道具 举报

签到天数: 127 天

[LV.7]常住居民III

 楼主| 发表于 2014-2-3 14:16:38 | 显示全部楼层
@suixin812  

1、但却同样是个功能强大的工具 但和却的意思重复了。都是转折,删掉却。

2、(对于节点导入顺序以及冲突选项的处理详见手册的@include节。)这个难道不是@include节么?我在英文文档里面没找到这一句话,所谓的手册不是这个手册么?
回复

使用道具 举报

签到天数: 127 天

[LV.7]常住居民III

 楼主| 发表于 2014-2-3 14:18:17 | 显示全部楼层
语笑嫣然 发表于 2014-2-1 11:42
其摆放顺序对皮肤的影响,比如放在最尾就是最后读取。不同的代码顺序对执行速度也不同————来自某蜜蜂的 ...

不同的代码顺序对执行速度也不同

求例子。没例子没办法理解。执行速度和文件摆放顺序有关系么?

或者说的不是代码执行速度?而是皮肤载入速度什么的?
回复

使用道具 举报

签到天数: 78 天

[LV.6]常住居民II

发表于 2014-2-5 18:09:53 | 显示全部楼层
会哭的梧桐树 发表于 2014-2-3 14:16
@suixin812  

1、但却同样是个功能强大的工具 但和却的意思重复了。都是转折,删掉却。

我说的是Reference->Skins->@Include Option 中
回复

使用道具 举报

签到天数: 78 天

[LV.6]常住居民II

发表于 2014-2-5 18:10:54 | 显示全部楼层
会哭的梧桐树 发表于 2014-2-3 14:18
不同的代码顺序对执行速度也不同

求例子。没例子没办法理解。执行速度和文件摆放顺序有关系么?

和加载速度没关系,和加载顺序有关系。这里面有一个覆盖的关系。
回复

使用道具 举报

签到天数: 78 天

[LV.6]常住居民II

发表于 2014-2-5 18:11:53 | 显示全部楼层
囧囧无力 发表于 2014-2-1 09:47
我是来说题外话的。。
“如果你需要引入更多的文件,只要用不同的标识来声明就可以了。
@include=SomeFil ...

2.5新增的功能,而且必须要写在节点下,以前是写在哪里都一样
回复

使用道具 举报

签到天数: 127 天

[LV.7]常住居民III

 楼主| 发表于 2014-2-5 20:17:38 | 显示全部楼层
suixin812 发表于 2014-2-5 18:11
2.5新增的功能,而且必须要写在节点下,以前是写在哪里都一样

我怎么觉得没有差...直接空一行写在一个代码文件的最后,貌似也可以
回复

使用道具 举报

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

本版积分规则

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