This commit is contained in:
boybook
2025-12-01 20:59:16 +08:00
parent 12738a142c
commit 760c2dd9ad
5535 changed files with 21070 additions and 2021 deletions

View File

@@ -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数据绑定
![分页](./picture/dataBindingUI/fenye.gif)
@@ -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)
```