问个正在困扰我的问题
我在做一套跨平台用户界面类库,目前的设计是将基本元素component(可以理解为Windows下的 window)使用prior和next两根指针按Z轴顺序连接。同时,使用container类将component成组,进行管理,container是composite模式。把一个container上的某个component称作该container的孩子。使用一个server类接受系统消息,server类聚合一个container,并委托container对直接孩子进行管理。
每一个component使用一个矩形约束它的边界。
问题:当server接收到一个mouse move消息,并得知当前的鼠标位置在x,y处,它应该如何确定当前应处理该消息的component?
我目前的设计是,server检查自己直接孩子的矩形,确定将消息发给哪一个孩子,该孩子再检查自己的孩子,直到发现应该接受消息的component为止。虽然用起来感觉还不错,但心里上觉得其中冗余太多,计划改为按Z轴次序到序(高-低)查找,但细细分析下来,仍然不甚理想请各位大虾不吝赐教,谢过