2010-02-14 98 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