Delai dans une méthode
Bonjour,
j'aimerais savoir comment créer un délai dans une de mes méthodes, je voudrais en effet que une partie de mon code s'execute et que la suite attende avant de commencer (ceci pour faire un décompte avant le début de la partie).
Pour le moment j'ai essayer de faire ceci :
Ceci stoppe bien mon execution de code mais apres les timers que j'ai dans la méthode startGame() ne fonctionnent plus.
Quelqu'un aurait il une idée ?
j'aimerais savoir comment créer un délai dans une de mes méthodes, je voudrais en effet que une partie de mon code s'execute et que la suite attende avant de commencer (ceci pour faire un décompte avant le début de la partie).
Pour le moment j'ai essayer de faire ceci :
<br />{<br />...<br />NSThread *monThread = [[NSThread alloc] initWithTarget:self selector:@selector(startGame) object:nil];<br /> [monThread start];<br /> //[self startGame];<br /> [super viewDidLoad];<br /> <br />}<br /><br />-(void)startGame {<br /> <br /> NSDate *future = [NSDate dateWithTimeIntervalSinceNow: 5.10 ];<br /> [NSThread sleepUntilDate:future];<br />}<br />
Ceci stoppe bien mon execution de code mais apres les timers que j'ai dans la méthode startGame() ne fonctionnent plus.
Quelqu'un aurait il une idée ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
la méthode s'exécute démarre un timer et rend la main.
le timer arrivé à échéance envoi un évènement
qui est traité par une (ou plusieurs autres méthodes)
cela permet à l'application de rester active pendant l'attente
A+JYT
J'ai essayé plusieurs choses :
- récupérer la notification de fin du thread et lancer une nouvelle méthode une fois fini. ==> Probleme : les NSTimer dans ma méthode ne fonctionne toujours pas...
-appelé ma méthode et modifier ses timers en les déclenchant après mon délai ==> Probleme : l'appli n'a plus la main et attend que le timer se déclenche pour continuer
Quoi faire ?
Pourquoi ne pas faire un [tt][self performSelector:@selector(startGame) withObject:nil afterDelay:2.0][/tt] pour qu'il appelle ta méthode startGame au bout de 2 secondes ?
Ou sinon un NSTimer configuré pour durer 2 secondes (repeat:NO bien sûr) et qui appelle startGame à la fin ?
Le plus simple pour ton décompte c'est de faire un NSTimer de toute façon. Qui se déclenche toutes les secondes (repeat:YES). Avant de lancer ce timer, tu mets une variable d'instance NSUInteger à disons 3 (nombre de secondes du décompte), et à chaque fois que le timer se déclenche, tu décrémentes ce NSUInteger. Quand il arrive à zéro, tu arrêtes (invalide) ton timer (tu n'en aura plus besoin le décompte est fini), puis appelle ta méthode startGame. Comme ça en plus avec cette méthode de déclencher ton timer toutes les secondes et d'avoir un décompte à côté, ça te permet d'afficher le décompte dans l'interface de ton jeu.
Pour mon décompte en effet ça à l'air d'être bien plus adapté. Je fais bien démarrer le jeu apres un décompte, me reste plus qu'à l'afficher à l'écran.
Merci AliGator comme d'hab