自从 cocos2d 3.0 以来 CCTargetedTouchDelegate 已被删除,我想知道如何处理触摸吞咽的东西?
我在 Canvas 节点(2.x 中的图层)顶部有一个小 Sprite ,需要将 Sprite 的优先级设置为高于 Canvas 。当用户在 Sprite 边界框内触摸时,触摸被吞没,否则 Canvas 将响应它。
Best Answer-推荐答案 strong>
在 cocos2d 3.0 中,触摸以相反的 z 顺序处理。这意味着如果您的 Sprite 在 Canvas 节点上呈现,它应该已经首先收到触摸通知,并且有机会吞下它。
但是,要接收和吞下 Sprite 的触摸,您应该遵循以下步骤:
- 为你的 Sprite 创建一个单独的类并继承它
CCSprite 。
- 在
init 方法中将 self.userInteractionEnabled 设置为 YES
如果这个类。
- 添加 empty
touchBegan: 方法。
这会吞掉触摸,因为没有在 touchBegan: 方法中调用 [super touchBegan:...] ,你不会将它传递给底层节点.
CCSprite (一直到CCNode )的默认实现调用[super touchBegan:...] ,这个这就是为什么您需要创建一个子类并覆盖此行为的原因。
如果您确实需要在某些情况下将触摸传递给底层节点,您可以编写如下内容:
-(void)touchBeganUITouch *)touch withEventUIEvent *)event
{
if (_passToUnderlyingNode == YES)
{
//passed to canvas node
[super touchBegan:touch withEvent:event];
}
else
{
//swallowed
}
}
关于ios - cocos2d 3.0如何优先处理触摸吞咽,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/24229958/
|