2013-02-19 50 views
2

通過幫助和建議,我爲我的精靈創建了一個路徑,以便只能觸摸非透明部分。這是我想出的道路:在cocos2d中未正確檢測到CGPath

path = CGPathCreateMutable(); 
    CGPathMoveToPoint(path, NULL, endTouch.x, endTouch.y); 
    CGPathAddLineToPoint(path, NULL, 0, 250); 
    CGPathAddLineToPoint(path, NULL, 30, 0); 
    CGPathCloseSubpath(path); 

這適用於除我之外的所有其他課程。不管我在哪裏挖掘,Xcode中保持印刷的「外部」使用此代碼:

for(int i = 0; i < [sprArray count]; i++) 
{ 
    CCSprite *sprite = (CCSprite *)[sprArray objectAtIndex:i]; 
    if(CGRectContainsPoint([sprite boundingBox], location)) 
    { 
     selectedSprite = sprite; 
     location = [selectedSprite convertToNodeSpace:location]; 
     if (CGPathContainsPoint(path, NULL, location, NO)) 
     { 
      NSLog(@"inside"); 
     } 
     else 
     { 
      NSLog(@"outside"); 
     } 

     break; 
    } 
} 

,如果我得到的,如果條件,沒有其他人,但即使我的實際挖掘裏面我只能將我的精靈,有色精靈,它沒有得到我設置的路徑。我的測量是否錯誤?如果不是,我做錯了什麼?這與我想要使用的圖像......

sample

+0

約問題的更詳細。 – 2013-02-19 09:17:26

回答

1

這隻有圖像大小相同。根據圖像大小計算座標。

enter image description here

CGPathMoveToPoint(path, NULL, 54, 0); //1: 54 = distance from left, 0 = dis fem bottom 
CGPathAddLineToPoint(path, NULL, 28, 34); 
CGPathAddLineToPoint(path, NULL, 36, 76); 
CGPathAddLineToPoint(path, NULL, 51, 104); 
CGPathAddLineToPoint(path, NULL, 46, 147); 
CGPathAddLineToPoint(path, NULL, 67, 147); 
CGPathAddLineToPoint(path, NULL, 70, 105); 
CGPathAddLineToPoint(path, NULL, 56, 66); 
CGPathAddLineToPoint(path, NULL, 52, 42); 
CGPathAddLineToPoint(path, NULL, 67, 20); 
CGPathAddLineToPoint(path, NULL, 92, 0); 
CGPathCloseSubpath(path); 
+0

非常感謝!所以如果我有不同形狀的精靈,我將不得不創建不同的路徑? – user1597438 2013-02-19 09:30:35

+0

是的,對於iPhone和iPad ...你可能會因爲創建這條路而感到無聊......所以如果形狀數量有限,那麼只能這樣。 – Guru 2013-02-19 09:31:30

+0

再次感謝您的幫助。 – user1597438 2013-02-19 09:34:38