我一直在阅读三本书(iPhone游戏开发,iPhone食谱和iPhone开发),但到目前为止我还没有找到问题的答案,所以我希望有人可以帮助我。
举个例子,假设我想在屏幕上设置一个操纵杆和三个按钮。
我需要在屏幕底部永久显示所有这些内容,而不是占用任何游戏渲染区域,即不会重叠到游戏中。
好吗?
现在,从我可以收集的内容来看,如果我理解这一点,一种方法是打破那些四个控制,并将每个控件放在它的自己的视图(或子视图)上,并具有透明度其他控件在每一层上......
所以第1层,将有操纵杆和操纵杆周围的背景,但右边的透明部分......
下面的图层将是(上层)操纵杆所在的透明区域,然后是按钮的位图,然后再次透明到该按钮的右侧......等等每个其他图层/按钮。
这样我就有了触摸测试的层次结构,如果它在透明区域,则发送到下一个子视图。
然而,当我有游戏渲染和分数等时...我正在看约7个观点...
所以我的问题是这些:
这是最佳(最佳)方式吗?如果没有,那怎么办?
对于包含子视图或仅多层视图的View,是否存在性能或SDK限制?
所有这一切都可以在一个图层/视图上完成= - 请记住,当按下一个或多个按钮时,joytick将在相同时间向所有方向移动。因此,在操纵杆远离手指按压的同时,按下屏幕右侧的按钮可以检测到错误的“捏”手势...参见?
如果可以,请帮忙。
如果我过度复杂,或者感到困惑,请原谅我 - 我觉得很难'教'自己的东西......如果我的解释令人困惑,请告诉我,我会尝试和重写它们。
由于
答案 0 :(得分:1)
如果我理解,你要求UIKit在7个重叠视图中合成你的位图,而不是将它自己合成到视图中的1个图像中。您还可以获得通过命令链传递点击的“好处”。
我会用一个视图来做 - 每次有变化时将位图绘制成一个图像 - 或者甚至在主图形区域的顶部绘制操纵杆/按钮控制位图。 (您可能还希望调整控件大小,并缩放图像。)
对每个图层的非透明区域测试每次点击似乎并不比单个图像中所有控件的已知矩形测试点击更简单。我认为这段代码最终会更清晰 - 更少的对象。
对于“捏合”,触摸的起始点应确定触摸哪个控件,而touchesMoved数据确定它的去向。不要使用touchesMoved数据来启动新按钮。
那就是说,我在OpenGL中做了所有事情,所以我习惯于管理自己的图层。