变量
变量在 JSON UI 开发中扮演着重要的角色,他们不仅可以在全局当中存储数据,也可以从一个控件中到另外一个控件中继承数据。也可以说变量是一种数据,它存储着字符串、布尔值、数字、数组和对象。
创建变量
我们应该要如何正确创建变量呢?很简单,只需把属性的值写成 “$ + 变量名”,也就是字符串开头加上“$”,例如在示例中,我们创建了变量,甚至引用的控件也能作为变量。
当然,变量远不如此,我们还可以用于继承或其他用途。
声明变量
当一个变量没有声明它所储存的数据,属性就会将他认为 null 或 变量名。
所以声明一个变量是很有必要的,声明变量就像上方的示例一样,将变量视为属性,直接赋值给他。
默认变量
为了尽可能减少变量带来的错误,我们需要给变量赋予一个默认值。(即使你不赋予一个默认值也没有关系,只要变量被声明就行)
我们只需像声明变量那样,在变量名后方加上 |default ,并给这个变量声明一个默认值。
但也不必要一直使用默认变量声明一个变量,因为默认变量的权重低,会被新的值覆盖。
作用域
上述所提到的变量,声明变量所在的控件就是一个作用域,该作用域的范围为该控件以及所有后代控件。
上述的示例中,example3 控件会显示 def 文字。说明变量会优先使用最近的作用域作为变量的值。
全局变量
如上所述,变量有一定的作用域,并不能在其他控件共享。我们可以使用全局变量弥补这些问题。
全局变量可以在 RP/ui/_global_variables.json 文件中声明,在文件内部声明的变量具有全局性,任何文件都能使用全局变量。
继承变量
就像下面那样,使用其他控件的变量:
当我们引用其他控件时,变量也同时继承了过来。当前控件的变量名如果与其他控件的变量名一致的话,其他控件的变量就会被覆盖。
批量属性
一般我们都需要重复使用某个控件,我们可以选择引用、使用变量可以使同一个控件呈现出不同的可能。(也可以用于穷举同一个控件…)
就例如定义一个按钮的外观,不可能总是为按钮的三种状态分别写三个不同的控件。我们这时就可以给这三种状态引用同一个控件,使用一个变量定义三种状态不同的按钮背景。这样我们就省下了重复的属性,与此同时也可以多使用几个变量完善按钮的样式。
variables 属性
使用 variables 属性,通过不同的条件来反映不同的变量。使用变量的运算以及条件判定大大提升了变量的使用性。
即使属性可以使用变量的运算,但更推荐使用 variables 属性判定某个条件下改变变量的数据。特别是做经典UI样式和携带版UI样式的时候,就可以使用 variables 属性来给屏幕在不同的UI样式下呈现不同的内容。
当你只需要一个判定式去处理,可以直接使用
下方是一个判定经典UI样式和携带版UI样式的示例:
requires 是条件,他的介绍如下:
属性 | 属性名 | 值 | 描述 |
---|---|---|---|
requires | 需求 | 字符串 | requires 的条件为 true 时,才会应用该对象内所有的变量。 |
使用 variables 时,建议给变量赋予默认值,当条件都不符合时变量就会采取默认值。