2013-02-19 2 views
2

С помощью справки и предложений я создал путь для моего спрайта, чтобы можно было коснуться только непрозрачных частей. Это путь, который я придумал:CGPath не обнаружен должным образом в cocos2d

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

Будьте более подробно о вопросе. –

ответ

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

+0

да, для iphone и iPad ... вам может быть скучно создать этот путь .. так, если количество форм ограничено, то только для этого. – Guru

+0

Еще раз спасибо за вашу помощь. – user1597438

Смежные вопросы