2.6
This commit is contained in:
@@ -169,13 +169,13 @@ property_bag用于定义绑定变量的默认值,假如Python没有返回数
|
||||
|
||||
如果直接将 binding_name 与控件需要的属性同名,那么“控件需要的属性名”和“Python 函数里声明的绑定变量名”就会一致,进而“一一对应”,不需要任何额外映射。但在实际项目中,我们可能会遇到以下需求或问题:
|
||||
|
||||
1. 你的控件属性名是 #abcdefg,但 Python 中的绑定名偏偏叫 #my_python_binding,二者不一样。
|
||||
2. 界面上不止一个属性值需要使用同一个绑定变量。举例:我们想让“某个整数”既用来显示文本,又控制可见性(具体见视图绑定部分)。
|
||||
3. 你不想改 Python 里的函数名,也不想改 JSON 里已有的属性名(因为牵涉到其他位置的调用)。
|
||||
1. 你的控件属性名是 #abcdefg,但 Python 中的绑定名偏偏叫 #my_python_binding,二者不一样。
|
||||
2. 界面上不止一个属性值需要使用同一个绑定变量。举例:我们想让“某个整数”既用来显示文本,又控制可见性(具体见视图绑定部分)。
|
||||
3. 你不想改 Python 里的函数名,也不想改 JSON 里已有的属性名(因为牵涉到其他位置的调用)。
|
||||
|
||||
这些场景下,binding_name_override 就能发挥作用:
|
||||
|
||||
• binding_name:用来告诉引擎“我要引用 Python 端哪个绑定变量”。
|
||||
• binding_name:用来告诉引擎“我要引用 Python 端哪个绑定变量”。
|
||||
• binding_name_override:用来告诉引擎“我把这个绑定变量的值,最终要赋给 UI 的哪个属性”。
|
||||
|
||||
假设你原本写了一个 Python 绑定函数,返回一个字符串,名为:
|
||||
@@ -349,7 +349,7 @@ def ReturnMyStr(self):
|
||||
|
||||
## 效果展示
|
||||
|
||||
如图所示为季度mod西游:大闹天宫中图鉴的效果展示,下面我们将一步步拆解,通过一个demo复刻来详细介绍如何使用ui数据绑定。这部分是之前的人写的,讲的不是很清楚,看看就好。
|
||||
如图所示为季度mod西游:大闹天宫中图鉴的效果展示,下面我们将一步步拆解,通过一个demo复刻来详细介绍如何使用ui数据绑定。
|
||||
|
||||

|
||||
|
||||
@@ -482,6 +482,7 @@ def OnTypeTabChecked(self, args):
|
||||
self.OnMonsterToggleChecked({ "index": self.mCurMonsterIndex })
|
||||
```
|
||||
|
||||
|
||||
从JSON中我们可以看到toggle总共有八种状态,各种状态的详细效果可以打开游戏设置界面查看,左侧的按钮就是toggle。主要有选中、未选中两种基础状态,每种状态又有hover和非hover,然后还有锁定、未锁定,所以总共就有2^3=8种状态组合,需要不同的控件展示。由于我们这里比较简单,只考虑了选中、未选中以及锁定三种状态,所以只实现了对应的三种控制panel,其JSON如下:
|
||||
|
||||
```json
|
||||
@@ -700,9 +701,9 @@ def OnItemToggleChecked(self, args):
|
||||
toggleIndex = 0
|
||||
self.mCurItemIndex = toggleIndex
|
||||
itemDict = self.mItemData[self.mCurItemTab][toggleIndex]
|
||||
self.SetSprite(self.mItemIcon, itemDict["icon"])
|
||||
self.SetText(self.mItemName, itemDict["name"])
|
||||
self.SetText(self.mItemDesc, itemDict["desc"])
|
||||
self.GetBaseUIControl(self.mItemIcon).asImage().SetSprite(itemDict["icon"])
|
||||
self.GetBaseUIControl(self.mItemName).asLabel().SetText(itemDict["name"])
|
||||
self.GetBaseUIControl(self.mItemDesc).asLabel().SetText(itemDict["desc"])
|
||||
self.set_control_visible(self.mItemInfoWrap, True)
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user