Comment stopper l'horloge démarrée par : Clock.schedule_interval

Gerard.isa Messages postés 108 Statut Membre -  
Gerard.isa Messages postés 108 Statut Membre -
Bonjour,
Pour la suite de mon petit jeu pour enfant, je n'arrive pas à trouver comment stopper l'horloge démarrée par :
Clock.schedule_interval(self.deplacement, 10.0/100.0)
Merci de m'éclairer

Configuration: Windows / Firefox 63.0

4 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    suggestion:
    monevenement = Clock.schedule_interval(my_callback, 0.5)
    # pour arrêter:
    monevenement.cancel()
    # possible aussi d’arrêter ainsi, non recommandé pour des raisons de performance:
    Clock.unschedule(my_callback)
    0
  2. Gerard.isa Messages postés 108 Statut Membre 3
     
    Salut yg_be,

    Merci de ton aide.
    Je débute en Python.
    Voici mon bout de code, ce serait sympa de me montrer comment utiliser ta solution.

    class Voiture(Widget):
        def __init__(self,canvas):
            self.dx = 10
            self.canvas=canvas
            #Taille et position:
            self.size=(Window.size[0]*0.4,Window.size[1]*0.4)
            #self.pos=(0,Window.size[1]*0.02)
            self.pos=(0,0)
            #Ajout de l'image
            CheminImageVoiture = "Z:\\Projet Jeu\\Images\\Voiture01.png"
            with self.canvas:
                self.dessin = Rectangle(source=CheminImageVoiture,size=self.size, pos=self.pos)
            self.bind(pos=self.update_canvas)
    
        def update_canvas(self, *args):#Mise a jour des positions de l'image:
            self.dessin.pos = self.pos 
    
        def move(self, fin)
            self.x=self.x+self.dx
            print(self.x)
            if self.x > 600: # limite de l'ecran
                fin=True
            return(fin)
            
        def positionner(self, obj_form): #positionne la forme exactement à son emplacement
            if triangle_actif == False and demi_actif == False and hexa_actif == False:
                self.deplace_voiture() # si toutes les formes sont bien positionnées on fait sortir la voiture de l'écran
            
        def deplace_voiture(self):
            Clock.schedule_interval(self.deplacement_voiture, 10.0/100.0)
    
        def deplacement_voiture(self, dt):#Deplacement de la voiture et des formes
            fin = False
            self.voiture.move(fin)
            if fin:
                quelque chose pour arrêter l'horloge (et donc le déplacement)
    
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      suggestion:
      def deplacement_voiture(self, dt):#Deplacement de la voiture et des formes
              fin = False
              fin = self.voiture.move(fin)
              return (not fin)
      0
  3. Gerard.isa Messages postés 108 Statut Membre 3
     
    Le return (not fin) va renvoyer un False qui mettra fin à l'horloge ?
    C'est ça qu'il faut comprendre ?

    Si je n'ai rien compris, pourrais-tu détailler stp ?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      tu as bien compris.
      0
  4. Gerard.isa Messages postés 108 Statut Membre 3
     
    Ok, encore merci,
    +
    0