这是一张大致的消息流程图:
1.为了以后跨平台,消息系统模仿MS
2.Sheet和Layer是一个虚拟的逻辑类(模仿COCOS的Scene和layer),这里我Sheet具有Z属性,直接控制了
SoarWnd窗口的层次,同一层次的全部放在一个Layer中;事件处理的话,依照Z的顺序依次判定即可。
3.有了Sheet,就可以很容易进行模态窗口的处理,当一个Sheet为模态的,那么事件处理被宽松限制在Sheet容器中,
宽松是因为SoarUI系统由自己的消息系统,在Sheet容器外的窗口可以通过消息进行事件的触发。
4.窗口绘制方面:1.父窗口绘制,也促使子窗口绘制,这种方式容易实现,SoarUI的初始版本即使用该方法(效率低下)
2.父、子窗口分开单独渲染,由于有Sheet和Layer的帮助,可以很好运用。(我是偏向该方法,目前还没有发现有层次问题)
以上是我在写UI库的最新尝试,每当碰一个想法,并推翻之前的,的确是一个很艰难的抉择!!!