Comment faire pour réinitialiser NSTimer? code swift
Je suis donc la création d'une application/jeu où vous appuyez sur une touche correspondant à une image avant le temps s'épuise et que vous perdez. Vous obtenez 1 seconde appuyez sur le bouton, et si vous choisissez la droite, puis sur le bouton de la minuterie se réinitialise et une nouvelle image. Je vais avoir de la difficulté à mettre à zéro la minuterie. Il se déclenche au bout d'une seconde, même après que j'ai tenter de le réinitialiser. Voici le code:
loadPicture() s'enfuit viewDidLoad()
func loadPicture() {
//check if repeat picture
secondInt = randomInt
randomInt = Int(arc4random_uniform(24))
if secondInt != randomInt {
pictureName = String(self.PicList[randomInt])
image = UIImage(named: pictureName)
self.picture.image = image
timer.invalidate()
resetTimer()
}
else{
loadPicture()
}
}
et voici le resetTimer() méthode:
func resetTimer(){
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("gameOverTimer"), userInfo: nil, repeats: false)
}
Je pense qu'il peut avoir quelque chose à voir avec NSRunloops? Je ne suis pas sûr. Je ne sais même pas ce qu'est un NSRunloop est d'être honnête.
randomInt
de sorte que lors de l'appel récursif à loadPicture
vous sont effectivement vérifier si ce nombre aléatoire est la même que la précédente nombre aléatoire, pas si ce nombre aléatoire est la même que l'image précédente qui était affichédans loadPicture() avant resetTimer() de la ligne d'écriture timer = néant . . .
Juste assurez-vous, êtes-vous de la création de la minuterie dans le même thread? deuxièmement, avez-vous essayer d'augmenter le temps de dire 5 secondes?
Paulw11, Il n'y a pas de bug. Le randomInt représente l'index de l'image dans le tableau. Si l'int est le même, l'image est la même aussi.
iHart, qui ne fonctionne pas 🙁
OriginalL'auteur Luke Patterson | 2015-07-29
Vous devez vous connecter pour publier un commentaire.
Donc j'ai enfin compris...
J'ai dû faire une fonction distincte pour démarrer la minuterie à l'initialisation.
Et dans le resetTimer() fonction que j'ai ajouté de la minuterie.invalidate() de la ligne. Donc, mon code ressemble à ceci:
MODIFIER
Avec le nouveau sélecteur de syntaxe ressemble à ceci:
NSTimer.scheduledTimerWithTimeInterval
va me donner en retour une nouvelle instance de NSTimer, droit ? Est-il un moyen de réinitialiser la Minuterie, comme, de la même occurrence de Timer ?non, je ne le crois pas. Vous pouvez invalider, mais si vous pensez que vous ne pouvez pas commencer à remonter. @Que20
OriginalL'auteur Luke Patterson