0

我在我的 AppDelegate 中启用了多点触控。在我的游戏场景 InputLayer 中,我添加了一个 CCMenu,其中一些 CCMenuItemSprite 用作按钮,一个 SneakyJostic 作为控制器。在我的输入层中,我启用了触摸,以这种方式符合“标准触摸委托”协议,因为我希望能够评估 CCMenu 和 SneakyJoystic 控制器之外的一些用户触摸。

当用户开始触摸 SneakyJoystick 或 CCMenu 类实例区域之外的屏幕时,当用户的手指位置到达菜单或游戏实例上方时,实例不会检测到触摸,而是保持在 touchMoved(和/或然后是场景层的 touchEnded) 方法。

有没有办法防止这种情况?我的意思是,我怎样才能让菜单或游戏实例来控制外部开始的触摸?

阅读Cocos2d 文档,似乎 CCMenu 已经符合多点触控协议,因此我应该能够提高其优先级。但我害怕搞砸这个。我试图更改图层的优先级,但它崩溃了。

有什么建议么?

编辑:您可以在我在各种书籍中找到的各种示例项目中看到我所描述的内容。基本上,当有人使用“SneakyJostic”或在图层上添加“CCMenu”时(在任何项目中),如果您从对象外部开始触摸并移动手指 util 触摸对象,它不会检测到它。如何在不让我的应用程序崩溃的情况下解决此问题?

4

2 回答 2

0

一旦场景开始获取触摸事件,它将获取整个触摸移动直到 touchEnded。没有像在某些基于鼠标的系统中那样有用的“touchEntered”或“touchExited”类型的事件。

您可以尝试的一件事是让场景处理事件,执行命中测试,然后根据需要将事件转发到操纵杆/菜单上(您可以简单地直接调用 touchesMoved;您可能必须合成 touchBegan/touchEnded手指移入/移出操纵杆/菜单区域时的事件)。

于 2012-10-30T20:19:31.060 回答
0

我不确定你到底想做什么,但如果我不进入编码部分,你可以通过在你的精灵或菜单图像中添加图像的一些透明部分来扩展菜单的触摸区域。此外,对于操纵杆,您还可以将 Guessers 用于您的控制器。

于 2012-10-29T11:52:15.430 回答