我在AppDelegate中启用了多点触控功能。在我的游戏场景InputLayer中,我添加了一个CCMenu,其中一些CCMenuItemSprite用作按钮,一个SneakyJostic用作控制器。在我的输入层中,我启用了触摸,这样就符合“标准触摸委托”协议,因为我希望能够评估CCMenu和SneakyJoystic控制器之外的一些用户触摸。
当用户的手指位置高于菜单或者喜欢的实例时,当用户开始触摸SneakyJoystick或CCMenu类实例区域之外的屏幕时,触摸不会被实例检测到,而是保持在touchMoved的控制之下(和/或然后touchEnded)场景图层的方法。
有没有办法防止这种情况发生?我的意思是,我怎样才能获得菜单或欢乐实例来控制从外面开始的触摸?
阅读Cocos2d documentation似乎CCMenu已经符合多点触控协议,因此我应该能够提高其优先级。但我害怕搞砸这个。我试图改变图层的优先级,但它崩溃了。
有什么建议吗?
编辑:您可以在我在各种书籍中找到的各种示例项目中看到我所描述的内容。基本上当有人使用“SneakyJostic”或在图层(在任何项目中)添加“CCMenu”时,如果从对象外部开始触摸并移动手指util触摸对象,它将无法检测到它。如何在不让我的应用程序崩溃的情况下修复此问题?答案 0 :(得分:0)
我不确定你想要做什么,但如果我不进入编码部分,你可以通过在精灵或菜单图像中添加一些透明的图像部分来扩展菜单的触摸区域。 同样对于操纵杆,您也可以使用Guessers作为控制器。
答案 1 :(得分:0)
一旦场景开始获得触摸事件,它将使整个触摸动作达到touchEnded。没有'touchEntered'或'touchExited'类型的事件在这里很有用,就像你进入一些基于鼠标的系统一样。
您可以尝试的一件事是让场景处理事件,执行命中测试,然后根据需要将事件转发到操纵杆/菜单上(您可以直接调用touchesMoved;您可能需要合成当手指移入/移出操纵杆/菜单区域时触摸触摸/触摸事件。)