2010-04-03 4 views
0

J'ai deux UIImageViews se déplaçant comme des sprites sur une vue d'ensemble. Chaque imageview se déplace correctement par lui-même, mais lorsque je mets les deux images en même temps sur le panorama, leur mouvement individuel est étrangement limité à deux zones différentes de l'écran. Ils ne toucheront même pas programmé aux mêmes coordonnées.iPhone: mouvement étrange de deux "sprites" UIImageView

Ceci est mon code de mouvement pour la première imageView:

- (void)viewDidLoad { 
    [super viewDidLoad];  
    pos = CGPointMake(14.0, 7.0); 
    [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; 
} 
- (void) onTimer { 
    pallone.center = CGPointMake(pallone.center.x+pos.x, pallone.center.y+pos.y); 

    if(pallone.center.x > 320 || pallone.center.x < 0) 
     pos.x = -pos.x; 
    if(pallone.center.y > 480 || pallone.center.y < 0) 
     pos.y = -pos.y; 
} 

et pour la deuxième imageview:

- (IBAction)spara{ 
    cos = CGPointMake(8.0, 4.0); 
    [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(inTimer) userInfo:nil repeats:YES]; 
} 
- (void)inTimer{ 
    bomba.center = CGPointMake(bomba.center.x+pos.x, bomba.center.y+pos.y); 

    if(bomba.center.x > 50 || bomba.center.x < 0) 
     pos.x = -pos.x; 
    if(bomba.center.y > 480 || bomba.center.y < 0) 
     pos.y = -pos.y; 
} 

Pourquoi provoque ce comportement étrange?

Merci pour votre aide. Je suis un débutant.

Répondre

0

On dirait que pos est une variable d'instance de la classe qui contient ces méthodes.

Votre problème est que vous utilisez les mêmes variables pos.x et pos.y pour les deux images. Quand une méthode de minuterie change pos.x ou pos.y pour pallone, elle affecte le mouvement de bomba et vice versa.

La façon dont vous gérez cela est de créer une sous-classe de UIImageView qui contient la logique de mouvement. Chaque imageView se déplacera et conservera ses propres données de position. De cette façon, tout reste compartimenté.

+0

merci beaucoup, j'ai tout résolu! –

+0

Une coche serait appréciée. – TechZen