2010-02-14 54 views
0

我正在创建一个游戏,在那里你完成形状和区域被填充。但是,如果你的形状内有一只敌人的鸟,它不会填充。我想这样做,如果你做了一只鸟在你的形状中,你会失去生命。我怎么写一个if语句,这个语句几乎可以说下面的代码不会发生,那么你就失去了生命。如果它有助于失去一种生活,在我的代码中称为doDie。如果声明问题iphone?

-(void)fillMutablePath{ 



CGPoint movePoint = CGPointFromString([pointsToFillArray objectAtIndex:0]); 

CGPathMoveToPoint(fillPath, NULL, movePoint.x, movePoint.y); 

for (int i=0; i<[pointsToFillArray count]; i++) { 
    CGPoint tempPoint = CGPointFromString([pointsToFillArray objectAtIndex:i]); 
    CGPathAddLineToPoint(fillPath, NULL, tempPoint.x, tempPoint.y); 

} 


CGContextAddPath(gameViewObj._myContext, fillPath); 
CGContextFillPath(gameViewObj._myContext); 
CGPathRelease(fillPath); 

[pointsToFillArray removeAllObjects]; 

} 

if(fillMutablePath doesn't take place when making a shape){ 
[self doDie]; 
} 

就像我上面说的,fillMutablePath不会发生的原因是因为鸟会在形状中被捕获。任何帮助将非常感激!!

回答

1

我不完全确定你是如何以及在哪里检查鸟是否在路径中。我认为正确填写你,你应该做的路径之前(看到的if-else):

-(void)fillMutablePath{ 

    CGPoint movePoint = CGPointFromString([pointsToFillArray objectAtIndex:0]); 
    CGPathMoveToPoint(fillPath, NULL, movePoint.x, movePoint.y); 
    for (int i=0; i<[pointsToFillArray count]; i++) { 
     //... 
    } 
    CGContextAddPath(gameViewObj._myContext, fillPath); 

    if(CGPathContainsPoint(fillPath, nil, bird.center, false)){ 
     [self doDie]; 
    } 
    else { 
     CGContextFillPath(gameViewObj._myContext); 
    } 
    CGPathRelease(fillPath); 

    [pointsToFillArray removeAllObjects]; 
} 

如果鸟是在路径模具。别的,画画。澄清后

编辑:

//... 

    CGContextAddPath(gameViewObj._myContext, fillPath); 
    CGContextFillPath(gameViewObj._myContext); 

    if(CGPathContainsPoint(fillPath, nil, bird.center, false)){ 
     [self doDie]; 
    } 
    CGPathRelease(fillPath); 
    [pointsToFillArray removeAllObjects]; 
} 
+0

无论如何,我需要检查它是否在形状完成之后形状 – NextRev

+0

好的,请参阅我的更新答案。希望这就是你要找的。 – Dimitris

+0

问题是鸟中心是在另一个文件中定义的 – NextRev

0

可能的方法不会返回BOOL?

这样,如果鸟在形状中,则方法返回yes,如果鸟不在形状中,则返回no。

然后你可以在后面使用返回值。

+0

问题在于,鸟点是在另一个文件中定义的。我刚刚发布了另一个关于该问题的更多信息。这是我需要弄清楚完成我的应用程序的最后一件事 – NextRev