suffit.Lorsque l'utilisateur a deux doigts sur l'écran et en soulève un, je ne veux rien qu'il se passe
comme le dit le titre, je suis un peu d'un cornichon.
Voici donc les grandes lignes de mon problème. J'ai ce navire droit. Il repose au centre en bas de l'écran (240,0). Lorsque l'utilisateur touche à droite à un point supérieur à 240, le navire se déplace vers la droite. Et à gauche si l'utilisateur touche à un point inférieur à 240. CEPENDANT c'est génial quand il n'y a qu'un seul doigt sur l'écran à la fois. J'en ai besoin là où l'utilisateur touche à droite, ne lève pas le doigt, puis touche à gauche (OH CRAPHE IL Y A DEUX DOIGTS SUR L'ECRAN) le vaisseau continue de bouger jusqu'à ce qu'ils lèvent leur doigt droit, puis soudainement le vaisseau se déplace vers la gauche le deuxième contact.
J'utilise des minuteries pour ajouter/soustraire un certain nombre de cours x de coordonnées pour l'obtenir pour se déplacer.
C'est ce que j'ai en un mot: (Ne riez pas ou déteste, je suis un noob)
-(void)moveShipLeft:(id)sender {
shipView.center = CGPointMake(shipView.center.x - 2, 320 - (shipView.image.size.height/2));
}
-(void)moveShipRight:(id)sender {
shipView.center = CGPointMake(shipView.center.x + 2, 320 - (shipView.image.size.height/2));
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:touch.view];
if (240 < location.x){rightTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(moveShipRight:) userInfo:nil repeats:YES];}
if (240 > location.x){leftTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(moveShipLeft:) userInfo:nil repeats:YES];}
[shipView setCenter:shipView.center];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
if (rightTimer != nil) //Kill the timer that goes right upon touch removal
[rightTimer invalidate];
rightTimer = nil;
if (leftTimer != nil) //Kill the timer that goes left on touch removal
[leftTimer invalidate];
leftTimer = nil;
}
Je suis en train de reproduire entièrement les contrôles pour le jeu « Radiant » si son de l'aide. Je t'aimerai sérieusement pour toujours si tu aides.
Juste pour clarifier les choses, je veux que cela se produise:
- utilisateur touche le côté droit de l'écran
- navire se déplace à droite
- utilisateur touche côté gauche de l'écran avec le deuxième doigt
- alors que la navire est toujours en mouvement à droite parce que l'utilisateur n'a pas levé leur premier contact, l'utilisateur soulève alors le premier contact
- alors le navire change instantanément bien sûr de se déplacer à gauche vers le deuxième contact
en ce moment je touche à plusieurs permis, maintenant il fonctionne comme ceci:
- utilisateur touche le côté droit de l'écran
- navire se déplace à droite
- utilisateur touche côté gauche de l'écran avec deuxième doigt
- navire déplace vers la gauche, puis l'utilisateur ascenseur premier contact
- navire est arrêté dans ses voies, même si l'utilisateur n'a pas levé le deuxième contact
merci, je suis assez sûr que cela fonctionnerait. J'ai juste un peu travaillé ça dans ma tête et ça semblait aller. Alors qu'est-ce que je mettrais exactement dans mes contacts a commencé. Je pense que j'ai une idée mais ça ne marche pas comme je le veux. Merci beaucoup pour votre aide, je l'apprécions beaucoup^_^ –
Je suppose que si elle rend plus facile le navire ne doit pas aller vers le deuxième contact jusqu'à ce que l'utilisateur lève leur premier contact –
pas problemos, l'espoir tout fonctionne pour vous :) –