找回密码
 点一下
查看: 1922|回复: 13

请教下xml文档的一些规则

[复制链接]
发表于 2011-4-6 03:03:58 | 显示全部楼层 |阅读模式
这方法头目在之前的英雄的演示中有用过,叫什么来着,我忘了...

不过好像限制很多呀,很试了很多次也不得要领,想问下。

[codes=xml]
    <CBehaviorBuff id="KangXing_DieJia">
        <Name value="Behavior/Name/##xx##"/>
        <MaxStackCount value="0"/>
    </CBehaviorBuff>
    <CBehaviorBuff id="KangXing_HuoYan_F" parent="KangXing_DieJia" xx="KangXing_HuoYan_F"/>
    <CBehaviorBuff id="KangXing_HuoYan_Z" parent="KangXing_DieJia" xx="KangXing_HuoYan_Z"/>
[/codes]
把KangXing_DieJia中的xx改写为id是不行的,似乎是直接继承了一个确定的值,而上面的例子是正常运作的。
但是下面的就不可以,为什么呢?
[codes=xml]
    <CRequirementMod id="KangXing_HuoYan_FModxx">
        <OperandArray index="0" value="KangXing_HuoYan_F"/>
        <OperandArray index="1" value="##xx##"/>
    </CRequirementMod>
    <CRequirementGTE id="KangXing_HuoYan_Fxx">
        <OperandArray index="0" value="KangXing_HuoYan_FMod2"/>
        <OperandArray index="1" value="##xx##"/>
    </CRequirementGTE>

    <CRequirementMod id="KangXing_HuoYan_FMod2" parent="KangXing_HuoYan_FModxx" xx="KangXing_2"/>
    <CRequirementGTE id="KangXing_HuoYan_F1" parent="KangXing_HuoYan_Fxx" xx="KangXing_1"/>
[/codes]
这个进入编辑器看后,发现根本就没认出来,为啥呀?
发表于 2011-4-6 09:18:27 | 显示全部楼层
你这两个犯的全部都是相同错误。

如果你要把token继承到子类里去,那么自身必须是虚拟类。

否则直接实例化为固定值了。
回复

使用道具 举报

 楼主| 发表于 2011-4-6 09:34:54 | 显示全部楼层
[codes=xml]
    <CRequirementMod id="KangXing_HuoYan_FModxx">
        <OperandArray index="0" value="KangXing_HuoYan_F"/>
        <OperandArray index="1" value="##xx##"/>
    </CRequirementMod>
    <CRequirementMod id="KangXing_HuoYan_FMod2" parent="KangXing_HuoYan_FModxx" xx="KangXing_2"/>
[/codes]

这个KangXing_HuoYan_FModxx我并没有设定xx的值呀,搞不明白,我应该怎么修改呢?
还有就是token的类型有没有限定呢?
回复

使用道具 举报

发表于 2011-4-6 09:44:57 | 显示全部楼层
谁说你没设定值呢?

"##xx##"就已经是值了。你好好吧"KangXing_HuoYan_FModxx"弄成虚拟类吧。
回复

使用道具 举报

发表于 2011-4-6 09:45:46 | 显示全部楼层
如果你一定希望父类不是虚拟类,那么写法是完全不一样的。

你必须把<OperandArray index="1" value="##xx##"/>这句写到子类里去。其实token的语法还是挺简单的。
回复

使用道具 举报

 楼主| 发表于 2011-4-6 09:49:57 | 显示全部楼层


有没有“虚拟类”的定义呢?我再去学习下好了。
回复

使用道具 举报

发表于 2011-4-6 09:50:18 | 显示全部楼层
default="1"  

如果我说默认模板的话大概更容易理解。我说虚拟类说的比较少。
回复

使用道具 举报

 楼主| 发表于 2011-4-6 09:57:02 | 显示全部楼层
啊~我明白了。
之前一直忽略了,谢谢头目啦。
回复

使用道具 举报

发表于 2011-4-6 10:03:55 | 显示全部楼层
其实我如果还有时间续写我那套xml教程的话。我首先会写一篇“类继承和模板继承的统一”来把类继承和模板继承统一起来。之后才在此基础上写token教程。

研究到一定程度,我们会发现,在本质高度上。基础类的继承和改写和模板的继承和改写是一回事。我把默认模板说成虚拟类也是因为这个原因。不过我想起来这篇我还没开始写呢。现在直接就把默认模板说成虚拟类确实有点不合适hmmm。
回复

使用道具 举报

 楼主| 发表于 2011-4-6 10:10:27 | 显示全部楼层

因为之前看过你的教程,感觉自己有点方向了,可是摸索起来进度还是还慢呀,真悲剧。

对了,继续地板的问题,我试验了下
[codes=xml]
    <CRequirementConst id="asd1" default="1">
        <Value value="##xx##"/>
    </CRequirementConst>
[/codes]
会直接读取出错,那么token是只能用于link之类的值吗?
回复

使用道具 举报

发表于 2011-4-6 10:30:12 | 显示全部楼层
hmmm绝非如此。

这就是我说的,这个编辑器无法发挥出XML的所有效能。它只是无法理解这种高深的写法而已。因为编辑器那一字段只认数字。而这里"##xx##"它以为是字符串了。

你可以在后面跟一句    <CRequirementConst id="aa2" parent="asd1" xx="1"/>  就会发现,aa2的Value就变成1了。
回复

使用道具 举报

 楼主| 发表于 2011-4-6 11:08:50 | 显示全部楼层
试了下,无论是编辑器还是触发都读不出来呀,Value的值始终是0呀...

asd.SC2Map

35 KB, 下载次数: 2

回复

使用道具 举报

发表于 2011-4-6 11:09:11 | 显示全部楼层
不过如果你用于任何字符串类的值,它就都不会管。并不限于Link

其实很早的版本里你强制给token指定类型也是可以的比如<?token id="xnum" type="int32"?> 如今反而不行了,不知道出于啥考虑。
回复

使用道具 举报

 楼主| 发表于 2011-4-6 11:17:02 | 显示全部楼层
嗯,明白啦。
辛苦头目了,谢谢啦。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-22 09:55 , Processed in 0.080923 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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