找回密码
 点一下
查看: 766|回复: 4

【已解决】求问 UI事件处理

[复制链接]
发表于 2016-3-19 21:54:33 | 显示全部楼层 |阅读模式
本帖最后由 enddeadroyal 于 2016-3-20 02:23 编辑

论坛逛了半个月了 基础的UI知识都掌握了
目前掌握到重绘UI的2大类方法
1重载UI 通俗的说就是写xml
2触发器绘制UI 通俗的说就是写触发函数

1重载UI 写xml文件固然很好 但是存在一个致命的缺点
重载UI事件的处理异常麻烦 需要将xml中所需的节点在触发器里映射成对话框项
然后才能处理事件响应
还有一个缺点 是不必要的UI生成 重载了GameUI下的节点 必然会在游戏界面中生成 即使将他隐藏 也会存在于内存中 造成性能的损失 而且触发器无法销毁hook了的窗口
2触发器绘制UI
这里可以分为2小类
(1)绘制或HOOK XML中预定的UI
缺陷如一 事件处理异常困难
(2)动态生成
触发器有内建函数 为我们提供了绘制对话框和对话框项的函数
此方法也存在致命缺陷 UI的变更 会导致触发器绘制过程变更 有时这种变更甚至是几何级难度的增加
在软件设计上 这并不符合View和Controller的分离

那么想问各位有没有更好的办法绘制UI处理事件
PS:在观察窗体结构是我发现了TriggerDialogFrame和TriggerWindowPanel
TriggerWindowPanel是在GameUI这个节点下的
TriggerDialogFrame是和触发器相关的 目前未找到其根节点和路径 我希望能重载TriggerDialogFrame 来实现UI的绘制
还有就是触发器有个函数叫ForEachUIFrame 这个函数具体怎么用的 谁告知下
@麦德三世  @yxxiaobin
 楼主| 发表于 2016-3-19 21:59:14 | 显示全部楼层
这里补充一点 关于触发器和xml混用
DialogControlCreateFromTemplate 这个函数可以绘制UILayout下的元素
但是如果其根路径不在GameUI下 则无法将其元素映射成对话框控件
也就是事件的处理完全无法进行。。。
回复

使用道具 举报

 楼主| 发表于 2016-3-19 22:43:53 | 显示全部楼层
30min惨案。。。
没有资料 学习太痛苦了
回复

使用道具 举报

 楼主| 发表于 2016-3-20 02:23:14 | 显示全部楼层
自己解决了 终于能分离UI和事件了
回复

使用道具 举报

发表于 2016-3-23 17:51:48 | 显示全部楼层
其实没明白你的困难是什么。将UI映射为对话框项不是很好的一种手段吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-23 15:14 , Processed in 0.147986 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表