2011-04-28 3 views
0

Je vous écris une application iPhone à l'aide cocos2d 0.99.5, j'ai cette classe personnalisée:ligne de dessin ccDrawLine à mal coordonnées

@interface Head : CCSprite <CCTargetedTouchDelegate> 

Je dessine une ligne dans cette classe méthode draw comme ceci:

-(void) draw { 
    [super draw]; 
    glEnable(GL_LINE_SMOOTH);   
    glColor4f(0.8, 1.0, 0.76, 1.0); 
    ccDrawLine(p1, p2); 
} 

p1, p2 sont calculés comme suit:

CGPoint p1 = CGPointMake(self.position.x, self.position.y); 
....... 
//change the position 
....... 
CGPoint p2 = ccp(self.position.x, self.position.y); 

maintenant, le problème est la ligne est dessiné un t différents points autres que p1, p2. Je suppose que les points doivent être convertis en quelque chose, mais ne savez pas ce que & comment.

Si je spécifie les mêmes points manuellement, la ligne est dessinée aux coordonnées appropriées.

Qu'est-ce qui manque ici ??

Répondre

0

Tout ce que vous dessinez dans la fonction draw est relatif à la position du nœud (dans ce cas, c'est la position de Head). Ainsi, lorsque vous changez la position après avoir réglé p1 mais avant de régler p2, le résultat est inattendu. Si vous essayez avec des points manuels, la ligne n'est dessinée correctement que lorsque la position est (0,0).

+0

Merci, je l'ai – Adam

0

Essayez de les convertir à l'espace mondial:

CGPoint p1World = [self convertToWorldSpace:p1]; 

CGPoint p2World = [self convertToWorldSpace:p2]; 
Questions connexes