使用 Cocos2d,要检测是否点击了精灵,我们需要进行所有计算



例如,如果我们有 10 个矩形精灵,我们使用随机宽度、高度、位置和 z 索引生成它们。现在的方法

-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

被称为。我们怎么知道点击了哪个精灵?我知道一些技术可以检查点击点是否在精灵矩形的边界内,但是在上述情况下,如果矩形 A 位于左上角的矩形 B 的顶部,并且当矩形 B 的左上角被点击时,它可能是矩形 A 被点击 - 点击点实际上在两个矩形的内部。

我们是否必须手动执行此操作,甚至考虑 z 索引...?(可能遍历从最高 z 指数到最低 z 指数的所有精灵(。

如果精灵是一个三角形,并且旋转呢? Cocos2d 中没有内置的方法可以处理这个问题吗?

(那是因为我几天前浏览了核心图形示例代码......似乎在这种情况下,会有两个点击事件,一个用于主视图,一个用于子视图,我们可以检查用户点击的视图是什么,而无需进行任何计算(

一个可能的解决方案是CCSprite的一个子类,它声明自己是CCStandardTouchDelegate或CCTargetedTouchDelegate的委托。然后在这些委托方法中对子画面执行相应的操作。

相关内容

最新更新