2011-02-02 3 views
0

Quelqu'un peut-il conseiller ce que la méthode utilisée pour le scénario suivant:traçant une ligne animée qui s'efface

utilisateur touche l'écran puis fait glisser son doigt sur ce point et une ligne est tracée, mais ils se déplacent leur doigt de haut en bas de la ligne suit leur doigt comme une ligne droite.

exemple est comme le centre d'une horloge où l'aiguille des minutes est fixée au centre et l'utilisateur entraîne l'autre extrémité autour de l'horloge. L'aiguille des minutes glisse comme une ligne droite permanente qui n'efface pas les détails sous-jacents.

J'espère que j'ai bien expliqué cela?

merci pour quelques conseils

+0

Vous devrez en apprendre davantage sur le Quartz pour dessiner la ligne droite. Il suffit d'utiliser touchesBegan pour définir le point de départ dans une variable CGPoint. Dans touchesMoved, définissez le point de fin dans une autre variable CGPoint, puis utilisez setNeedsDisplay pour redessiner la ligne. Vous apprendrez comment utiliser drawRect et setNeedsDisplay. – Fattie

Répondre

0

Il suffit d'enregistrer les coordonnées x/y du point où la traînée a commencé, et le point où le doigt est au bout de quelques millisecondes, calcule alors le vecteur de direction

http://en.wikipedia.org/wiki/Direction_vector

la formule calculée, toujours juste chercher les doigts ou la position x y, et l'utiliser pour calculer la contrepartie

+0

@joe, ouais je vois que j'ai mal compris la question. n'a pas lu l'effacement et redessiner à la nouvelle position du doigt partie – cppanda

+0

Salut, merci pour les réponses, j'ai déjà utilisé les touches a commencé et touche déplacé et obtenir une ligne dessinée que je bouge mon doigt. Cependant, laissez-moi vous expliquer ... toucheagan à 10,10 et comme je passe à 10,200 la ligne est tracée. Maintenant, sans lever le doigt, je passe mon doigt à 100.100. La ligne se dessine avec un angle qui longe la droite. Ce dont j'ai besoin, c'est que je passe à 100.100 la ligne commençant à 10.10 se prolonge comme une ligne droite à mon doigt, comme une main d'une horloge laissant le contenu en dessous inchangé – user7865437

+0

Salut Joe, merci! Fondamentalement, j'essaie de comprendre comment reproduire la caractéristique du dessin au trait et le déplacement de la ligne qui a une ancre fixe au toucher initial et qui se développe en longueur lorsque le doigt se déplace de l'ancre, mais aussi permettre la rotation. Un bon exemple est l'application iPhone free wordsearch illimitée qui montre exactement ce que j'essaie de faire .... ;-) – user7865437

2

le code suivant:

- (void)drawRect:(CGRect)rect { 

    UIGraphicsBeginImageContext(self.frame.size); 
    CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), YES); 
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 2.0); 
    CGContextSetLineJoin(UIGraphicsGetCurrentContext(), kCGLineJoinMiter); 

    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 1.0, 1.0, 1.0); 
    CGContextSetRGBFillColor(UIGraphicsGetCurrentContext(), 1.0, 1.0, 1.0, 1.0); 
    CGContextBeginPath(UIGraphicsGetCurrentContext()); 
    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), startPoint.x, startPoint.y); 
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), endPoint.x,endPoint.y); 
    CGContextStrokePath(UIGraphicsGetCurrentContext()); 
    self.image = UIGraphicsGetImageFromCurrentImageContext(); 

    [self setNeedsDisplay]; 

}