如何在cocos2d中获取多个对象以对触摸作出反应

时间:2012-02-26 03:03:39

标签: iphone cocos2d-iphone touch

我的游戏中有以下代码:

int x = 50;  
int y = 400;  
for (int i = 1; i < 30; i++) {  
    if (x+54 > self.boundingBox.size.width) {  
        x = 50;  
        y -= 70;  
        ccDrawCircle(CGPointMake(x, y), 20, 3.14, 100, NO);  
    } else {  
        ccDrawCircle(CGPointMake(x, y), 20, 3.14, 100, NO);  
        x += 72;  
    }  
}

如何让每个圈子对触摸作出反应?具体来说,我正在考虑为它们提供按钮按压效果(触摸时缩小,在触摸时调整大小),还可以在触摸时更改颜色。

1 个答案:

答案 0 :(得分:1)

如果使用Cocos,最简单的方法是让你的圈子成为CCSprites,然后在你的图层中使用这种方法回应那些精灵的触摸:

-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{

然后,使用这样的常用技术迭代你的精灵:

isTouchHandled= CGRectContainsPoint([sprite boundingbox], [[CCDirector sharedDirector] convertToGL:[touch locationInView: [touch view]]]);

如果isTouchHandled为TRUE,那么您可以使用该精灵或其他任何内容执行操作。

请注意,您可以在图层本身或精灵的子类中使用此方法,无论您选择哪种方式,都必须在init或其中某处使用触摸调度程序注册节点:

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:NO];