BDFramework.Core
BDFramework.Core copied to clipboard
OnFocus中默认调用Open不合理
OnFocus中默认调用Open,导致关闭弹窗后页面刷新。所有页面都重写OnFocus太麻烦;
open里不应该 做窗口的初始化逻辑, 应该只是单纯的激活.
openri不应该 做窗口的初始化逻辑, 应该只是单纯的激活.
请教窗口初始化逻辑应该写在哪里呢?例如打开某个窗口请求接口或者还原一下ui默认值之类的
gmail抽风,之前消息没收到,刚设置了下 好了点!
窗口设计如下: 1.窗口初始化逻辑应该在Init中 2.设计窗口时候 需要考虑 Focus、ReOpen的情况, 对于需要在Open时做的事情,应该 主动传入 UIMsg、然后open里根据UIMsg的传参 成员参数 枚举等进行处理 是否还原默认值,是否请求url 默认的情况 或者uimsg为空,应该只处理窗口重新显示 激活逻辑
Weekend @.***> 于2022年8月4日周四 16:24写道:
openri不应该 做窗口的初始化逻辑, 应该只是单纯的激活.
请教窗口初始化逻辑应该写在哪里呢?例如打开某个窗口请求接口或者还原一下ui默认值之类的
— Reply to this email directly, view it on GitHub https://github.com/yimengfan/BDFramework.Core/pull/56#issuecomment-1204930374, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGLDKSIY3JEAR3POVWXCOO3VXN45HANCNFSM55JP3C3Q . You are receiving this because you commented.Message ID: @.***>
gmail抽风,之前消息没收到,刚设置了下 好了点! ---------------------------------------------------------------------- 窗口设计如下: 1.窗口初始化逻辑应该在Init中 2.设计窗口时候 需要考虑 Focus、ReOpen的情况, 对于需要在Open时做的事情,应该 主动传入 UIMsg、然后open里根据UIMsg的传参 成员参数 枚举等进行处理 是否还原默认值,是否请求url 默认的情况 或者uimsg为空,应该只处理窗口重新显示 激活逻辑 Weekend @.> 于2022年8月4日周四 16:24写道: … openri不应该 做窗口的初始化逻辑, 应该只是单纯的激活. 请教窗口初始化逻辑应该写在哪里呢?例如打开某个窗口请求接口或者还原一下ui默认值之类的 — Reply to this email directly, view it on GitHub <#56 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGLDKSIY3JEAR3POVWXCOO3VXN45HANCNFSM55JP3C3Q . You are receiving this because you commented.Message ID: @.>
1.研究了一下OnFocus的执行逻辑,执行最上层已经打开的窗口的onfocus,窗口已经打开并状态,不太理解为什么还要去再执行一次open。
因为这是逻辑层的栈顶,并不是渲染层的,此时的Transform可能已经被其他的遮挡,所以需要ReOpen激活
Weekend @.***> 于2022年8月4日周四 17:09写道:
gmail抽风,之前消息没收到,刚设置了下 好了点!
窗口设计如下: 1.窗口初始化逻辑应该在Init中 2.设计窗口时候 需要考虑 Focus、ReOpen的情况, 对于需要在Open时做的事情,应该 主动传入 UIMsg、然后open里根据UIMsg的传参 成员参数 枚举等进行处理 是否还原默认值,是否请求url 默认的情况 或者uimsg为空,应该只处理窗口重新显示 激活逻辑 Weekend @.
> 于2022年8月4日周四 16:24写道: … <#m_-8570205645607186637_> openri不应该 做窗口的初始化逻辑, 应该只是单纯的激活. 请教窗口初始化逻辑应该写在哪里呢?例如打开某个窗口请求接口或者还原一下ui默认值之类的 — Reply to this email directly, view it on GitHub <#56 (comment) https://github.com/yimengfan/BDFramework.Core/pull/56#issuecomment-1204930374>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGLDKSIY3JEAR3POVWXCOO3VXN45HANCNFSM55JP3C3Q https://github.com/notifications/unsubscribe-auth/AGLDKSIY3JEAR3POVWXCOO3VXN45HANCNFSM55JP3C3Q . You are receiving this because you commented.Message ID: @.>
[image: image] https://user-images.githubusercontent.com/24834613/182808731-2db678ed-3ae0-4eec-bda5-60f58f099601.png 1.研究了一下OnFocus的执行逻辑,执行最上层已经打开的窗口的onfocus,窗口已经打开并状态,不太理解为什么还要去再执行一次open。
— Reply to this email directly, view it on GitHub https://github.com/yimengfan/BDFramework.Core/pull/56#issuecomment-1204980322, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGLDKSLER5DKXPEW6MVDYODVXOCFZANCNFSM55JP3C3Q . You are receiving this because you commented.Message ID: @.***>
因为这是逻辑层的栈顶,并不是渲染层的,此时的Transform可能已经被其他的遮挡,所以需要ReOpen激活 Weekend @.> 于2022年8月4日周四 17:09写道: … gmail抽风,之前消息没收到,刚设置了下 好了点! ---------------------------------------------------------------------- 窗口设计如下: 1.窗口初始化逻辑应该在Init中 2.设计窗口时候 需要考虑 Focus、ReOpen的情况, 对于需要在Open时做的事情,应该 主动传入 UIMsg、然后open里根据UIMsg的传参 成员参数 枚举等进行处理 是否还原默认值,是否请求url 默认的情况 或者uimsg为空,应该只处理窗口重新显示 激活逻辑 Weekend @. > 于2022年8月4日周四 16:24写道: … <#m_-8570205645607186637_> openri不应该 做窗口的初始化逻辑, 应该只是单纯的激活. 请教窗口初始化逻辑应该写在哪里呢?例如打开某个窗口请求接口或者还原一下ui默认值之类的 — Reply to this email directly, view it on GitHub <#56 (comment) <#56 (comment)>>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGLDKSIY3JEAR3POVWXCOO3VXN45HANCNFSM55JP3C3Q https://github.com/notifications/unsubscribe-auth/AGLDKSIY3JEAR3POVWXCOO3VXN45HANCNFSM55JP3C3Q . You are receiving this because you commented.Message ID: @.> [image: image] https://user-images.githubusercontent.com/24834613/182808731-2db678ed-3ae0-4eec-bda5-60f58f099601.png 1.研究了一下OnFocus的执行逻辑,执行最上层已经打开的窗口的onfocus,窗口已经打开并状态,不太理解为什么还要去再执行一次open。 — Reply to this email directly, view it on GitHub <#56 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGLDKSLER5DKXPEW6MVDYODVXOCFZANCNFSM55JP3C3Q . You are receiving this because you commented.Message ID: @.>
又研究了一下,SetAsLastSibling只在ShowWindow的时候调用了,在Open里只是做了SetActive(true)。这样ReOpen好像并不能解决Transform被遮挡的问题
这里不是SetAsLastSibling层级,在窗口后退中高的层级会调用close()进行隐藏。 若窗口打开列表为:1231516171,这样顺序中1窗口在页面后退时, 1反复修改层级。所以每次都要open激活。
这里不是SetAsLastSibling层级,在窗口后退中高的层级会调用close()进行隐藏。 若窗口打开列表为:1231516171,这样顺序中1窗口在页面后退时, 1反复修改层级。所以每次都要open激活。
有几点还是不太理解
- 窗口后退中貌似没有关闭高的层级

- 如果调用了高层级的Close(),那么其OnFocus应该不会被调用
3.HistoryList做了去重,”1231516171“在后退时“1”应该不会出现反复修改层级的情况

这里的去重是解决1233这种情况,而不是12123这种,因为回退 到同一个界面没意义,甚至用户会觉得是bug
这里的去重是解决1233这种情况,而不是12123这种,因为回退 到同一个界面没意义,甚至用户会觉得是bug
谢谢,这个明白了。 还有些疑惑,open中只是做了状态修改和激活gameobject。通过在onfocus中调用open这种方式去reopen是如何解决遮挡问题呢?
这里的去重是解决1233这种情况,而不是12123这种,因为回退 到同一个界面没意义,甚至用户会觉得是bug
在back中已经通过showwindow去激活并改变逻辑层和渲染层了。在onfocus中去open好像也不会对逻辑层和渲染层有改变,毕竟open只是做了激活
back forward和 windowClose是两种情况, 前者是外部逻辑主动控制导航,后者是当前窗口关闭要回退上一级窗口.
Weekend @.***> 于2022年8月4日周四 18:53写道:
这里的去重是解决1233这种情况,而不是12123这种,因为回退 到同一个界面没意义,甚至用户会觉得是bug
在back中已经通过showwindow去激活并改变逻辑层和渲染层了。在onfocus中去open好像也不会对逻辑层和渲染层有改变,毕竟open只是做了激活
— Reply to this email directly, view it on GitHub https://github.com/yimengfan/BDFramework.Core/pull/56#issuecomment-1205094935, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGLDKSOY3MPCAYFX33DECWLVXOOLNANCNFSM55JP3C3Q . You are receiving this because you commented.Message ID: @.***>
back forward和 windowClose是两种情况, 前者是外部逻辑主动控制导航,后者是当前窗口关闭要回退上一级窗口. Weekend @.> 于2022年8月4日周四 18:53写道: … 这里的去重是解决1233这种情况,而不是12123这种,因为回退 到同一个界面没意义,甚至用户会觉得是bug 在back中已经通过showwindow去激活并改变逻辑层和渲染层了。在onfocus中去open好像也不会对逻辑层和渲染层有改变,毕竟open只是做了激活 — Reply to this email directly, view it on GitHub <#56 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGLDKSOY3MPCAYFX33DECWLVXOOLNANCNFSM55JP3C3Q . You are receiving this because you commented.Message ID: @.>
明白泡哥,我只是觉得open只在打开窗口时调用,focus只在关闭弹窗重新聚焦回来时调用,这样用起来比较方便。毕竟已经有onfocus了还要再从open里区分是ShowWindow来的还是onfocus来的。之前用老版是没有focus的,最近开新项目用了新版本,突然出现关弹窗之后原窗口刷新了这个问题,查文档也没查到相关的描述,debug了好久才定位到问题😢
好的,这一块我回头优化下做成自定义的注入,然后补上相关文档
已收到,谢谢!