会哭的梧桐树 发表于 2014-1-25 11:22:03

【审核】!SetOption指南

本帖最后由 会哭的梧桐树 于 2014-2-3 14:36 编辑

!SetOption (Config)
设定Meter或者Measure里面的一个选项(如:FontSize、Text、Formula等)。

!SetOptionGroup (Config)
设定Meter或者Measure组里面的一个选项(如:FontSize、Text、Formula等)。

!SetOption指令使你能够设置Meter和Measure的选项。这不需要Meter或Measure设置”DynamicVariables”,并且在皮肤被刷新或选项被其他动作改变前一直有效。这个选项不需要一定已经存在在Meter或Measure下因为如果需要!SetOption自行增加选项。

更改或添加选项
下面代码的效果是:当鼠标悬浮在这个Meter上时,将文字颜色从红色变为绿色,并将文字样式变为加粗.

Meter=String
FontColor=255,0,0,255
; 文字颜色红色,完全不透明
Text="Hello World"
; 显示文字“Hello World”
MouseOverAction=[!SetOption MeterOne FontColor 0,255,0,255][!SetOption MeterOne StringStyle Bold]
; 鼠标移入时触发动作:将MeterOne的FontColor选项改为0,255,0,255;
; 将MeterOne的StringStyle选项改为Bold


删除或恢复选项
你可以使用!SetOption将选项设置为""(空字符)来移除之前你所做的修改。应当注意的是这相当于从Meter或Measure中直接删除了这一行选项。

Meter=String
FontColor=255,0,0,255
Text="Hello World"
MouseOverAction=[!SetOption MeterOne FontColor 0,255,0,255][!SetOption MeterOne StringStyle Bold]
MouseLeaveAction=[!SetOption MeterOne FontColor ""][!SetOption MeterOne StringStyle ""]
上面的代码将移除Meter中的FontColor和StringStyle选项。对于FontColor,这就会产生问题。因为FontColor选项被移除后文字颜色将变为默认的0,0,0,255(黑色)而不是你期望的255,0,0,255(红色)。
这个问题可以用两个方法解决:
直接将选项设置成原本的状态。

Meter=String
FontColor=255,0,0,255
Text="Hello World"
MouseOverAction=[!SetOption MeterOne FontColor 0,255,0,255][!SetOption MeterOne StringStyle Bold]
MouseLeaveAction=[!SetOption MeterOne FontColor 255,0,0,255][!SetOption MeterOne StringStyle ""]
或者使用MeterStyle。Meter会优先使用当前节点下的选项,然后才是使用MeterStyle中的设置:第一个!SetOption在下添加了FontColor选项,Meter将使用添加的选项;第二个!SetOption则移除了添加的FontColor选项,这样Meter重新使用MeterStyle中的FontColor选项。

FontColor=255,0,0,255


Meter=String
MeterStyle=TextStyle
Text="Hello World"
MouseOverAction=[!SetOption MeterOne FontColor 0,255,0,255][!SetOption MeterOne StringStyle Bold]
MouseLeaveAction=[!SetOption MeterOne FontColor ""][!SetOption MeterOne StringStyle ""]


变量与!SetOption
像其他Bang指令一样,!SetOption会在设置选项前计算引用的变量的值。

MyColor=255,255,255,255


Meter=String
Text="Hello World"
MouseOverAction=!SetOption MeterOne FontColor #MyColor#
DynamicVariables=1
上面会将MeterOne设置为FontColor=255,255,255,255而非FontColor=#MyColor#。如果你愿意也可以将选项设置为“#MyColor#”,你需要使用“*”来将变量进行“转义”。

Meter=String
Text="Hello World"
MouseOverAction=!SetOption MeterOne FontColor #*MyColor*#
DynamicVariables=1
现在Meter会被设置为FontColor=#MyColor#,并且因为设置了DynamicVariables=1,FontColor会跟随变量MyColor的改变而变化。

与!SetOption
!SetOption会使用Measure的当前值,如果指令中使用了的话。

Measure=Time
Format=%S


Measure=Time
Format=%M


Meter=String
Text=
DynamicVariables=1
LeftMouseUpAction=!SetOption MeterOne Text
上面代码会将Meter的Text选项设置为当前的分钟,而非设置为Text=。与变量一样,如果你需要,可以使用“*”来将Measure进行转义。

Measure=Time
Format=%S


Measure=Time
Format=%M


Meter=String
Text=
DynamicVariables=1
LeftMouseUpAction=!SetOption MeterOne Text [*MeasureTime2*]
现在Meter会被设置为Text=,并且因为设置了DynamicVariables=1,Text选项会一直显示Measure的返回值。


哪些选项!SetOption不能修改
一般情况下,!SetOption可以用来改变任何Meter或Measure中的任何选项。几乎所有与Meter或Measure类型匹配的选项,像FontColor、ImageName或Formula,都是可以的。其他Meter或Measure通用的选项,像Group、Meterstyle或UpdateDivider也都是可以的。你同样可以设置鼠标动作和条件动作。
然而还是有一些概括性的选项和一些特殊选项是不能用!SetOption来改变的。
·   你只能在Meter和Measure中使用!SetOption。也就是说你不能改变任何或者中的选项,也不能改变作为MeterStyle使用的节点,除非这个节点本身也是有效地Meter或Measure。
·   你不能使用!SetOption来改变Meter或Measure的节点名,Meter或Measure的类型(如Meter=Image)也不可以改变。·   对于不支持DynamicVariables=1的插件,你不能使用!SetOption来改变这种插件Measure中的插件特定的选项。下面这些选项可能!SetOption可以改变,但我们不推荐这样。
·   任何Meter中的MeasureName选项。·   任何Meter中的Hidden、Disable或Paused选项。你应当使用!HideMeter/!ShowMeter和!DisableMeasure/!EnableMeasure以及!PauseMeasure/!UnPauseMeasure。
·   任何Meter中的X和Y选项。你应当使用!MoveMeter来移动Meter。
·   插件Measure中的插件类型。此外,一些插件的选项可以使用!SetOption来改变,但需要特殊的!CommandMeasure指令来对插件进行刷新。如WebParser的Url选项,FileView的Path选项。

Soliv_ctx 发表于 2014-1-25 12:53:06

本帖最后由 Soliv_ctx 于 2014-1-25 12:54 编辑

[!SetOption MeterOne StringStyle[少了空格,]Bold]
[!SetOption MeterOne FontColor[个别几个少了空格]255,0,0,255]
后面也有类似这些少了空格的小细节错误

夜色之下 发表于 2014-1-25 20:05:18

这个选项不需要一定已经存在在Meter或Measure下因为如果需要!SetOption自行增加选项。
这段有点读不通的感角啊不如这样说 !setoption设定的选项不必存在于meter或者measure下之后添加点小李子说明之类的就是了

傻大个牌纯碱 发表于 2014-1-25 20:24:07

这帮技术党还在讨论

bjaxdr669xxzm 发表于 2014-1-26 09:47:23

本帖最后由 bjaxdr669xxzm 于 2014-1-26 09:48 编辑

我去, 送花花了。

onelove 发表于 2014-1-26 12:47:00

原谅我渣渣实在看不出有什么问题了

Chou_Moriarty 发表于 2014-1-26 14:39:22

没什么问题吧好像

会哭的梧桐树 发表于 2014-1-27 22:15:12

Soliv_ctx 发表于 2014-1-25 12:53
[!SetOption MeterOne StringStyle[少了空格,]Bold]
[!SetOption MeterOne FontColor[个别几个少了空格]2 ...

空格可能是因为从word黏贴过来的时候,论坛发帖的系统把空格弄没了,反正源文档里面代码空格都是有的。

会哭的梧桐树 发表于 2014-1-27 22:17:48

夜色之下 发表于 2014-1-25 20:05
这个选项不需要一定已经存在在Meter或Measure下因为如果需要!SetOption自行增加选项。
这段有点读不通的 ...

修改为
DynamicVariables选项不需要写在已经存在在Meter或Measure下,如果使用!SetOption,则会自行增加该选项。

这样子会不会比较通顺?

@suixin812

陈因斯坦-π 发表于 2014-2-8 20:47:33

“第一个!SetOption在下添加了FontColor选项,Meter将使用添加的选项”
改为“第一个!SetOption在命令中添加了FontColor选项(!SetOption MeterOne FontColor 255,0,0,255),Meter将优先使用这个添加的选项”,我觉得这样更容易懂,如果直接写在下添加了选项,听起来有点不明绝粒或许会误认为是写了FontColor=xxxx,导致看不懂。
——————————————————————————————————————————————————
“第二个!SetOption则移除了添加的FontColor选项,这样Meter重新使用MeterStyle中的FontColor选项。”
这里我建议说明一下:“第二个把第一个里的FontColor=xxxx替换成了MeterStyle=TextStyle,然后在!SetOption移除了添加的FontColor选项,这样Meter重新使用MeterStyle中的FontColor选项。”

页: [1] 2
查看完整版本: 【审核】!SetOption指南