Source: Scratch Wiki en français
Nombreux sont ceux qui ont demandé un bloc quand le bouton d'arrêt est cliqué ::events hat
. Mais il a été refusé car il irait à l'encontre du bouton d'arrêt et du bloc stop [tout v]
. C'est très facile de le reproduire sur Scratch.
Utilité
Détecter quand le bouton d'arrêt est cliqué est très utile dans certains projets, comme par exemple :
- dire au revoir quand quelqu'un quitte le jeu
- afficher la vignette d'un jeu
Méthodes
Ces méthodes utilisent une des propriétés du chronomètre intégré aux projets Scratch : celui-ci continue de fonctionner même quand le bouton d'arrêt est cliqué.
Méthode 1
quand le drapeau vert pressé répéter indéfiniment mettre [détecteur v] à ((chronomètre) + (0.1)) // si vous ne voulez pas de délai après le clic sur le bouton, mettez juste "chronomètre" end
quand le [chronomètre v] > (détecteur) ... stop [ce script v]
Le 1er script met continuellement la valeur de la variable détecteur égale à celle du chronomètre en ajoutant le délai entre le clic sur le bouton d'arrêt et l'exécution du 2ème script. Quand le bouton d'arrêt est cliqué, le 1er script ne fonctionne plus et la variable détecteur n'est plus modifiée. Par contre le chronomètre continue et quand sa valeur dépasse alors celle de la variable détecteur, le 2ème script s'exécute.
Méthode 2
quand le drapeau vert pressé répéter indéfiniment réinitialiser le chronomètre end
quand le [chronomètre v] > (0.3) // vous pouvez modifier le délai pour en avoir un plus long ou plus court, ou vous pouvez tout simplement mettre "0" pour une exécution instantanée ...
Le 1er script réinitialise le chronomètre pendant toute l'exécution du projet. Quand le bouton d'arrêt est cliqué, ce script cesse de s'exécuter et le chronomètre fonctionne alors normalement. Le 2ème script attend que le chronomètre dépasse la valeur indiquée pour s'exécuter. Contrairement à la première méthode, la deuxième ne nécessite pas l'utilisation d'une variable. Par contre vous ne pouvez utiliser le chronomètre pour mesurer le temps dans votre projet.
Ancien bug
Un bug était présent dans une ancienne version de Scratch. Il consistait à compter la variable détecteur comme "0" à la toute 1ère exécution du projet. Pour régler ce bug, on était obligés d'utiliser un bloc si <(chronomètre) > (détecteur)> alors
. Ce bug est actuellement réglé et c'est pour cela que le bloc au-dessus n'est pas présent dans ce tutoriel.