2009-12-05 10 views
0

Je veux sauter des balles dans un champ spécifique dans la vue, le problème est que je ne sais pas comment définir les positions de cette zone de champ et de mouvement. aussi Voici le code que j'utilise pour déplacer la balle dans la vue entière (l'objet balle est une vue d'image sur la vue). merci.Développement iPhone -CGPoint & NSTimer help

- (void) onTimer { ball.center = CGPointMake (emplacement.centre.x + pos., Ball.center.y + pos.y);

if(ball.center.x > 320 || ball.center.x < 0) 
    pos.x = -pos.x; 
if(ball.center.y > 460 || ball.center.y < 0) 
    pos.y = -pos.y; 

}

// Mettre en oeuvre viewDidLoad faire une configuration supplémentaire après le chargement de la vue. - (vide) viewDidLoad { pos = CGPointMake (14.0,7.0);

[NSTimer scheduledTimerWithTimeInterval:0.03 target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; 

}

+0

Vous devez clarifier votre question et/ou la diviser en plusieurs parties. Quel est le problème avec le code que vous avez maintenant, c'est-à-dire quel comportement inattendu voyez-vous? Par exemple, les balles ne bougent-elles pas du tout? Est-ce qu'ils bougent mais se déplacent incorrectement? Est-ce que la minuterie n'appelle pas la méthode 'onTimer:'? – TechZen

+0

dans le code ci-dessus son travail bien (la balle se déplace dans l'ensemble de l'écran), mais le problème est que je ne peux pas sembler définir une petite zone dans un emplacement spécifique dans la vue au lieu de 320 \ 460. Quand je change les valeurs, la balle rebondit sur place ou se déplace au mauvais endroit. – omri

Répondre

0

Au lieu de coder en dur 320 et 460, vous pouvez utiliser les limites de la vue d'obtenir le sont où vos boules doivent se déplacer.

Vérifiez la propriété bounds de UIView.

+0

merci, je vais vérifier. – omri

0
@implementation ViewController { 
    BOOL isPositiveXAxis; 
    BOOL isPositiveYAxis; 
} 


- (void)viewDidLoad { 
    [super viewDidLoad]; 

    //By default we are setting both BOOL value to YES because ballImage have (0,0) origin by default 
    isPositiveXAxis = YES; 
    isPositiveYAxis = YES; 
    imgBallView.layer.cornerRadius = imgBallView.frame.size.width/2; 

    [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(animateBall) userInfo:nil repeats:YES]; 
} 

-(void)animateBall { 

     //getting current image transform, and we will modify it later in code 
     CGAffineTransform transform = imgBallView.transform; 


     //checking if ‘isPositiveXAxis is true and imgBallView xAxis have less value then view border 
     if (isPositiveXAxis && imgBallView.frame.origin.x < self.view.frame.size.width - imgBallView.frame.size.width) { 
      transform.tx++; 
     } 
     else { 
      isPositiveXAxis = NO; 

      if (transform.tx>0) { 
       transform.tx--; 
      } 
      else { 
       isPositiveXAxis = YES; 
      } 
     } 

     //checking if ‘isPositiveYAxis is true and imgBallView yAxis have less value then view border 
     if (isPositiveYAxis && imgBallView.frame.origin.y < self.view.frame.size.height - imgBallView.frame.size.height) { 
      transform.ty++; 
     } 
     else { 
      isPositiveYAxis = NO; 

      if (transform.ty>0) { 
       transform.ty--; 
      } 
      else { 
       isPositiveYAxis = YES; 
      } 
     } 

     //setting updated trasform to imgBallView it will look animated. 
     imgBallView.transform = transform; 
} 

Le code ci-dessus génère le modèle requis. Il peut être vu dans la vidéo: https://vid.me/G3zO, qui peut vous aider à mieux le comprendre