0

CCBigSprite 和 CCSmallSprite 类继承自 CCSprite。
spr1,spr2 是它们的实例。

所有 ccTouchesStart、ccTouchesMove、ccTouchesEnd 方法都从协议 CCTargetedTouchDelegate 覆盖,用于这两个类。

问题:在正常情况下,触摸事件按预期工作并且适用于任何精灵实例,直到精灵重叠。
如果触摸 (CCSmallSprite *spr2),则触摸事件适用于 (CCBigSprite *spr1)。

由于此处存在重叠问题以及如图所示的确切位置。


当我按下 spr2 时,它的触摸事件应该起作用,而不是 sp1。

我该如何解决这个致命的问题?

在此处输入图像描述

两个类都具有相同的重写方法:

-(void)onEnter {
    [super onEnter];
    [[[CCDirector sharedDirector]touchDispatcher]addTargetedDelegate:self
priority:self.touchPriority swallowsTouches:YES];
}

有意义吗?

另外:
setPriority 没有改变任何东西。

我手动更改。

[spr2 setTouchPriority:1];[spr1 setTouchPriority:2];//较低意味着最高优先级,反之亦然。没有帮助。

这应该是 cocos2d-iphone 2.0 稳定版的问题吧?

4

1 回答 1

2

绘制顺序不影响触摸事件的顺序。

如果点击上图中的小精灵,只有精灵向 CCTouchDispatcher 注册的顺序决定了小精灵还是大精灵接收第一个触摸事件。

于 2013-02-13T23:21:53.807 回答