引用,就是使用其他控件的属性和变量。
下面我们来探究一下什么是引用吧!
"text": {
"type": "text",
"size": [ "default", "100%" ],
"text": "a"
},
"text_2": {
"type": "text",
"size": [ "default", "100%" ],
"text": "b"
}
由上方的代码块可知,我们可以使用引用减少重复属性:
"text@text_common": {"text": "a"},
"text_2@text_common": {"text": "b"},
"text_common": {
"type": "text",
"size": [ "default", "100%" ]
}
这样,text、text_2控件都能用到type和size的值
并且值是相同的
那么引用只需要在在控件名后加上@控件名,格式为 "controlName@namespace.otherControlName"。
controlName 为控件名,namespace 为引用控件所在的文件的命名空间,otherControlName 为引用控件的控件名。
这样就能在这个控件引用其他控件的属性值了!
引用变量
引用布仅可以使用其他控件的属性,也可以使用其他控件的变量:
"text@text_common": {"$a": "a"},
"text_2@text_common": {"$a": "b"},
"text_common": {
"type": "text",
"size": [ "default", "100%" ],
"text": "$a"
}
继承引用
如下面代码块所示,@$变量就可以使用继承引用了
"panel": {
"type": "panel",
"$b": "控件名",
"controls": [
{"a@$b": {}}
]
}
接着,给变量赋值
看到上方代码所示
赋值只需要"$变量": "控件名"
命名空间
命名控件是一个 JSON UI 文件的标识符,每次新建一个新的 JSON UI 文档都需要它,它甚至在跨文件引用中起到很大的作用。
不过,在使用它时,尽量避免命名空间重复。修改原版的 UI 文件时,也可以忽略掉命名空间,因为他已经在原版文件中声明了,并且 UI 文件的内容会与原版的 UI 文件的内容合并。
{"namespace": "start_screen"}
跨文件引用
跨文件引用它可以帮助我们整理控件,以免控件都在单独一个文件中,让文件杂乱无章。
在了解跨文件引用之前,我们需要了解到 命名空间 以及 跨文件引用的格式:
"控件名@命名空间.控件名"
如果你想新建一个文件储存某一些控件,你还需要了解 UI文件定义,并且还要给这个文件定义命名空间,之后引用这个命名空间中的控件就行了~