注意以下的结构,Grid List Box 在onProjectLoaded 中就已经初始化好了,但是Trajectory List Box 没有,在绘制之前才开始初始化好。
我们在kanzi studio 创建listbox的子节点,kanzi engine初始化的时候会创建一个新的树形结构来排列listbox的子节点。具体的结构如下
我们为Grid List Box 2D 创建一个Text Block 2D 的子节点,从Grid List Box 2D 访问 Text Block 2D 的path为
./Kanzi Scroll View (Grid List Box)/Kanzi Grid Layout (Grid List Box)/Text Block 2D (List Box Item)/Text Block 2D
子节点的名字改变的时候,替换上面黄色部分即为新的路径
我们为Grid List Box 3D 创建一个Text Block 3D 的子节点,从Grid List Box 3D 访问 Text Block 3D 的path 为
./Kanzi Scroll View (Grid List Box)/Kanzi Grid Layout (Grid List Box)/Text Block 3D (List Box Item)/Text Block 3D
我们为Trajectory List Box 3D创建一个Sphere子节点,从Trajectory List Box 3D 访问Sphere子节点的path为
./Kanzi Scroll View (Trajectory List Box)/Kanzi Trajectory Layout (Trajectory List Box)/Sphere (List Box Item)/Sphere
上面我们介绍了List Box真实的结构和路径,但是不建议使用这么复杂的路径来访问,kanzi 提供了更简单的方式来访问。
首先把要访问的子节点的属性绑定到外部,绑定的时候使用alias,然后修改外部绑定的值即可修改listbox里面的值
所以,假如我们要修改listbox里面节点subnode的valueInt的值,我们先在listbox外部节点假如datanode上添加一个valueInt,给datanode
创建一个alias: datanode, 这样我们先把subnode的valueInt绑定到datanode的valueInt({#datanode/valueInt}),这样我们只要修改datanode的valueInt
就达到修改subnode的valueInt值的目的了