0

我尝试检测具有位置的特定精灵,当我使用“if”语句时,构建失败。

这是我的代码

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

UITouch* myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView: [myTouch view]];
location = [[CCDirector sharedDirector]convertToGL:location];

int numGrades = [grades count]; 
for (int i = 0; i < numGrades; i++) 
{
    // Put each spider at its designated position outside the screen 
    CCSprite* grade = [grades objectAtIndex:i];

int numGrades = [grades count]; 
for (int i = 0; i < numGrades; i++) 
{
    CCSprite* grade = [grades objectAtIndex:i];

// if 语句似乎不起作用...我尝试做的是如果我触摸特定的精灵.. 它应该停止移动,但它没有。

    if ((grade.position.x==location.x) && (grade.position.y==location.y)) 
    {

        [grade stopAllAction];

    }
}
    }

 }

请更正'if'语句...

4

1 回答 1

0

您似乎只是想检测精灵上的触摸。您当前的相交测试要求您的触摸坐标与精灵中心点的坐标完全匹配,这实际上是不可能的..

相反,您应该尝试针对精灵的边界框测试触摸坐标。

if (CGRectContainsPoint(grade.boundingBox, location))     
{
    [grade stopAllActions];     
} 

还要注意它是带有“s”的stopAllActions ..

希望这可以帮助。

于 2012-06-19T06:34:57.053 回答