4

如果您的应用程序的 GUI 完全用于 2D 绘图,那么处理绘制内容和触摸位置的最佳实践应该是什么?

一个更好理解的例子:
我有一个带有地图的游戏。在这张地图上,我可以建造房屋和东西。
我还有一个可以扩展的信息栏。在扩展栏上,我绘制了一些关于游戏的信息,它还提供了更改不同值的界面。如果发生触摸,我必须检查信息栏是否扩展,以确定我是否要更改地图上的某些内容或栏上的某些内容。

这是由状态模式完成的,但我怀疑这是否正确,因为我认为由于可能存在“子状态”,它可能有点复杂。

所以基本上是一个问题:状态模式(来自 GoF)是处理纯图形 GUI 的最佳实践吗?

4

1 回答 1

2

这通常的工作方式是 UI 是 Control 对象的树。每个控件都有一些边界框,并且可能有许多子控件浮动在它上面。当点击发生时,树从上到下(这意味着孩子在父母之前,兄弟姐妹按顺序)。对于每个控件,您可以查看该点是否与其边界框相交。如果是这样,给控件一个机会来处理点击(即一些虚拟OnClick方法)。如果是,停止处理,点击完成。否则,请继续走,直到找到可以处理它的控件。

于 2010-08-23T21:12:13.620 回答