触摸CCArray中的特定CCSprite

时间:2012-06-18 08:41:33

标签: cocos2d-iphone

我在编码方面遇到麻烦,使得特定精灵在阵列之间移动....

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{        
    UITouch* myTouch = [touches anyObject];
    CGPoint location = [myTouch locationInView: [myTouch view]];
    location = [[CCDirector sharedDirector]convertToGL:location];
    CCSprite*grade=[grades lastObject];
    [grade runAction:[CCMoveTo actionWithDuration:3 position:location]];

}

阵列移动的最后一个对象..

你能帮我修改一下代码来触摸数组中的特定精灵,并且可以用ccTouchesMove方法进行移动。

P.S。我只使用cocos2d,而不是box2d。

1 个答案:

答案 0 :(得分:0)

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{        
    UITouch* myTouch = [touches anyObject];
    CGPoint location = [myTouch locationInView: [myTouch view]];
    location = [[CCDirector sharedDirector]convertToGL:location];

    for (CCSprite *grade in grades) {
        if (CGRectContainsPoint(grade.boundingBox, location)) {
            [grade runAction:[CCMoveTo actionWithDuration:3 position:location]];
        }
    }   

}

CGRectContainsPoint将检查触摸的位置是否在给定的rect内。所以我做的是迭代你的sprite数组和sprite,其中位置在他们的矩形(边界框)内,而不是移动该sprite。如果您只希望移动第一个触摸的精灵,可以在if语句中添加一个中断。