Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| multiple timers sans plantage : ruse de sioux!!! | |
| | Auteur | Message |
---|
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: multiple timers sans plantage : ruse de sioux!!! Lun 22 Fév 2016 - 0:11 | |
| EDIT du 15/03/16 : v1.4, modifié et renommé la sub ON_TICKER(N%,objet%) en PERFORM_TICKER_EVENT(N%). L'objet associé à un ticker est créé automatiquement, il possède le même numéro que le ticker(qu'il faut maintenant considérer comme un objet à part entière!). Programmation encore plus simple! EDIT du 06/03/16 : v1.3, remplacé le couple 'alpha/trigger_click' qui aléatoirement ne détecte pas toujours les évements, par le couple 'edit/on_change', plus fiable EDIT du 26/02/16 : v1.2, support du 'mouvement basé sur le temps', ajout d'une info dans les messages d'erreur, programmation 'événement' ou 'séquentielle' EDIT du 24/02/16 : v1.1, corrigé une erreur dans le code et ajout d'un message d'erreur si utilisation d'un TICKER non créé Bonjour à tous Comme beaucoup d'entre vous, je rechigne à utiliser plus d'un timer dans mon projet, ce n'est pas simple à gérer et en plus ça provoque des plantages. Mais plus maintenant! Je suis tombé sur un code de pseudo timer (nommé ticker) que j'ai développé il y a quelques années en DarkBasic, et ça marche du tonnerre!!! C'est particulièrement bien adapté à panoramic. Le principe est de n'utiliser qu'un seul timer qui sera un 'timer maitre', et qui va gérer tous les tickers. Chaque ticker est associé à un objet invisible (un edit), et déclenchera donc un événement qui lui est propre(via la commande 'text N,P'). Ce système ne peut pas interrompre un événement en cours, ni même une boucle, d'où sa stabilité. J'ai concocté une démo avec 3 tickers, aucun problème! Les tickers ne sont gérés que par 6 subs, et s'utilises à peu près de la même façon que les timers: V1.4: ' TICKER(N%) ' crée un pseudo objet ticker N% associé à un OBJET(un 'edit') invisible.(L'edit a le même numéro que le ticker) ' ' TICKER_INTERVAL(N%,delai%) ' défini l'interval de temps 'delai%' en milliseconde, du ticker N%. Par défaut, delai%=1000 ms ' ' PERFORM_TICKER_EVENT(N%) <--- Cette commande doit être géré par le timer maitre !!! ' déclenche l'évènement si le delai% de 'TICKER_INTERVAL' est dépassé. ' 'objet%'=0 ne retourne pas d'erreur(pratique en programmation séquentielle) ' ' TICKER_ON(N%) ' met en pause le ticker N% ' ' TICKER_OFF(N%) ' redémarre le ticker N% ' ' ON_CHANGE N%,label ' exécute le programme à partir du label 'label' quand l'objet système N% a "changé" ' ' en plus, on peut connaitre l'état d'un ticker: ' TICKER_STATE(N%,0) : 0=false / 1=true (true=event en cours d'exécution) ' TICKER_STATE(N%,1) : 0=start / 1=pause ' TICKER_STATE(N%,2) : nb d'image/sec affiché entre 2 appels(si >1 alors on a perdu des images) ' TICKER_STATE(N%,3) : ticker_exist ' ' TICKER_TIME_SCALE(scale) : permet de créer un effet d'accélération/ralenti pour les graphismes. ' ' Il n'y a pas besoin de déclarer quoi que ce soit, juste copier les subs dans ' votre source. C'est tout!!! V1.2 et +: on peut maintenant utiliser les tickers des 2 manières que permet panoramic: en évènement ou en programmation séquentielle. De plus, le support du 'mouvement basé sur le temps' pour les animations a été ajouté. Le 'mouvement basé sur le temps' est systématiquement utilisé dans les jeux, car les jeux indépendants de la cadence d'image sont des jeux qui s'exécutent à la même vitesse d'un ordinateur à l'autre, quel que soit la puissance de l'ordinateur utilisé (les objets bougent à la même vitesse). Les subs V1.4: - Code:
-
' ############################################################################## ' # # ' # Les SUBs V1.4 # ' # # ' ##############################################################################
' ############################################################################## ' sub TICKER(N%) if variable("memorise_tickers")=0 dim memorise_tickers ' un tableau pour gérer le tickers dim TICKER_STATE(9999,5) TICKER_STATE(0,2)=1 end_if ' erreur 1 edit N% : hide N% if TICKER_STATE(0,0)=0 TICKER_STATE(0,0)=NUMBER_TICKS end_if TICKER_STATE(N%,5)=1000 TICKER_STATE(N%,1)=0 TICKER_STATE(N%,4)=TICKER_STATE(0,0)+TICKER_STATE(N%,5) TICKER_STATE(N%,3)=1 TICKER_STATE(N%,2)=1 end_sub
' sub TICKER_INTERVAL(N%,delai%) ' erreur 2 if TICKER_STATE(N%,3)=0 then message "(2)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate if delai%<1 then message "(2)TICKER n°"+str$(N%)+": Délai nul ou négatif" : terminate TICKER_STATE(N%,4)=TICKER_STATE(N%,4)-TICKER_STATE(N%,5)+delai% TICKER_STATE(N%,5)=delai% end_sub
' sub PERFORM_TICKER_EVENT(N%) ' erreur 3 if TICKER_STATE(N%,3)=0 then message "(3)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate if TICKER_STATE(0,1)=0 TICKER_STATE(0,0)=NUMBER_TICKS TICKER_STATE(0,1)=N% else if TICKER_STATE(0,1)=N% then TICKER_STATE(0,0)=NUMBER_TICKS end_if TICKER_STATE(N%,0)=0 if TICKER_STATE(0,0)>=TICKER_STATE(N%,4) TICKER_STATE(N%,0)=1 TICKER_STATE(N%,2)=TICKER_STATE(0,2)*int((TICKER_STATE(0,0)-TICKER_STATE(N%,4))/TICKER_STATE(N%,5))+1 TICKER_STATE(N%,4)=TICKER_STATE(0,0)-mod(TICKER_STATE(0,0)-TICKER_STATE(N%,4),TICKER_STATE(N%,5))+TICKER_STATE(N%,5) if TICKER_STATE(N%,1)=0 text N%,str$(NUMBER_TICKS) end_if end_if end_sub
' sub TICKER_ON(N%) ' erreur 4 if TICKER_STATE(N%,3)=0 then message "(4)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate TICKER_STATE(N%,1)=0 end_sub
' sub TICKER_OFF(N%) ' erreur 5 if TICKER_STATE(N%,3)=0 then message "(5)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate TICKER_STATE(N%,1)=1 end_sub
' sub TICKER_TIME_SCALE(scale) ' erreur 6 if TICKER_STATE(N%,3)=0 then message "(6)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate TICKER_STATE(0,2)=scale end_sub
- démo:
- Code:
-
' Panoramic 0.9.27i5
' ============================================================== ' = Title : Tickers ' = ' = Author : Silverman ' = ' = Date : Février 2016 ' = ' = Version: 1.2 ' ============================================================== ' Comments : Créer une alternative aux timers ' ==============================================================
' Le principe va être de créer un timer maitre, qui ne gèrera que les tickers. ' Contrairement à un timer, un ticker ne peut pas interrompre un event en cours, ' donc une boucle ne peut pas être stoppée inopinément. Ce système ne provoque pas ' de plantage, quelque soit le nombre de tickers utilisé(9999 maximum)! ' Un ticker n'est rien d'autre qu'un chronomètre(pseudo objet) associé à un ' objet invisible(un 'edit') qui déclenche l'événement via la commande 'text N,P'. ' Un ticker peut générer l'évènement ON_CHANGE. ' Dans tous les events, sans exception, il faudra stopper le timer maitre, ainsi ' il n'y a besoin que d'une seule commande pour bloquer temporairement tous les tickers. ' ' ' ' Les tickers s'utilises à peu près de la même façon que les timers: ' ' TICKER(N%) ' crée un pseudo objet ticker N% associé à un OBJET(un 'edit') invisible.(L'edit a le même numéro que le ticker) ' ' TICKER_INTERVAL(N%,delai%) ' défini l'interval de temps 'delai%' en milliseconde, du ticker N%. Par défaut, delai%=1000 ms ' ' PERFORM_TICKER_EVENT(N%) <--- Cette commande doit être géré par le timer maitre !!! ' déclenche l'évènement si le delai% de 'TICKER_INTERVAL' est dépassé. ' 'objet%'=0 ne retourne pas d'erreur(pratique en programmation séquentielle) ' ' TICKER_ON(N%) ' met en pause le ticker N% ' ' TICKER_OFF(N%) ' redémarre le ticker N% ' ' ON_CHANGE N%,label ' exécute le programme à partir du label 'label' quand l'objet système N% a "changé" ' ' en plus, on peut connaitre l'état d'un ticker: ' TICKER_STATE(N%,0) : 0=false / 1=true (true=event en cours d'exécution) ' TICKER_STATE(N%,1) : 0=start / 1=pause ' TICKER_STATE(N%,2) : nb d'image/sec affiché entre 2 appels(si >1 alors on a perdu des images) ' TICKER_STATE(N%,3) : ticker_exist ' ' TICKER_TIME_SCALE(scale) : permet de créer un effet d'accélération/ralenti pour les graphismes. ' ' Il n'y a pas besoin de déclarer quoi que ce soit, juste copier les subs dans ' votre source. C'est tout!!!
label TIMER_MAITRE label mon_event1,mon_event2,mon_event3,sortir
dim i
' caption 0,"3 timers émulés !!!" on_close 0,sortir
' un memo que l'on va redimensionner en temps reel memo 4 : top 4,50
' un affichage alpha 5 : top 5,200 : caption 5,"Redimensionnez la fenetre horizontalement!"
' on declare les tickers, à peu près de la même maniere qu'un timer TICKER(1) : TICKER_INTERVAL(1,90) : on_change 1,mon_event1 :' surveille un affichage quelconque TICKER(2) : TICKER_INTERVAL(2,50) : on_change 2,mon_event2 :' surveille une procédure consommatrice de temps TICKER(3) : TICKER_INTERVAL(3,20) : on_change 3,mon_event3 :' surveille le redimensionnement du memo
' le timer maitre déclaré en dernier, doit avoir le temps d'intervalle plus court possible !!! timer 10 timer_interval 10,1 on_timer 10,TIMER_MAITRE
END ' ############################################################################## ' # # ' # Les EVENTs # ' # # ' ##############################################################################
' ############################################################################## ' on ne place que les subs 'PERFORM_TICKER_EVENT()' ici, rien d'autre!!! TIMER_MAITRE: timer_off 10 :' empêche le timer maitre de s'appeler lui même PERFORM_TICKER_EVENT(1) :' surveille et déclenche, chaque fois que le délai est écoulé, l'event associé au ticker n°1 PERFORM_TICKER_EVENT(2) :' surveille et déclenche, chaque fois que le délai est écoulé, l'event associé au ticker n°2 PERFORM_TICKER_EVENT(3) :' surveille et déclenche, chaque fois que le délai est écoulé, l'event associé au ticker n°3 timer_on 10 return
' event associé à l'objet n°1 :affichage quelconque mon_event1: timer_off 10 :' bloque le timer maitre et les tickers ' for i=1 to 40 print " 000"; next i wait 20 : cls :' on ralenti un peu ' timer_on 10 :' débloque le timer maitre et les tickers return
' event associé à l'objet n°2 : émule une procédure consommatrice de temps mon_event2: timer_off 10 :' bloque le timer maitre et les tickers wait 20 timer_on 10 :' débloque le timer maitre et les tickers return
' event associé à l'objet n°3 : redimensionne un memo en temps reel mon_event3: timer_off 10 :' bloque le timer maitre et les tickers ' width 4,width(0)-20 ' timer_on 10 :' débloque le timer maitre et les tickers return
' sortir sortir: timer_off 10 :' bloque le timer maitre et les tickers, pas utile ici mais bonne pratique de programmation terminate return
' ############################################################################## ' # # ' # Les SUBs V1.4 # ' # # ' ##############################################################################
' ############################################################################## ' sub TICKER(N%) if variable("memorise_tickers")=0 dim memorise_tickers ' un tableau pour gérer le tickers dim TICKER_STATE(9999,5) TICKER_STATE(0,2)=1 end_if ' erreur 1 edit N% : hide N% if TICKER_STATE(0,0)=0 TICKER_STATE(0,0)=NUMBER_TICKS end_if TICKER_STATE(N%,5)=1000 TICKER_STATE(N%,1)=0 TICKER_STATE(N%,4)=TICKER_STATE(0,0)+TICKER_STATE(N%,5) TICKER_STATE(N%,3)=1 TICKER_STATE(N%,2)=1 end_sub
' sub TICKER_INTERVAL(N%,delai%) ' erreur 2 if TICKER_STATE(N%,3)=0 then message "(2)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate if delai%<1 then message "(2)TICKER n°"+str$(N%)+": Délai nul ou négatif" : terminate TICKER_STATE(N%,4)=TICKER_STATE(N%,4)-TICKER_STATE(N%,5)+delai% TICKER_STATE(N%,5)=delai% end_sub
' sub PERFORM_TICKER_EVENT(N%) ' erreur 3 if TICKER_STATE(N%,3)=0 then message "(3)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate if TICKER_STATE(0,1)=0 TICKER_STATE(0,0)=NUMBER_TICKS TICKER_STATE(0,1)=N% else if TICKER_STATE(0,1)=N% then TICKER_STATE(0,0)=NUMBER_TICKS end_if TICKER_STATE(N%,0)=0 if TICKER_STATE(0,0)>=TICKER_STATE(N%,4) TICKER_STATE(N%,0)=1 TICKER_STATE(N%,2)=TICKER_STATE(0,2)*int((TICKER_STATE(0,0)-TICKER_STATE(N%,4))/TICKER_STATE(N%,5))+1 TICKER_STATE(N%,4)=TICKER_STATE(0,0)-mod(TICKER_STATE(0,0)-TICKER_STATE(N%,4),TICKER_STATE(N%,5))+TICKER_STATE(N%,5) if TICKER_STATE(N%,1)=0 text N%,str$(NUMBER_TICKS) end_if end_if end_sub
' sub TICKER_ON(N%) ' erreur 4 if TICKER_STATE(N%,3)=0 then message "(4)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate TICKER_STATE(N%,1)=0 end_sub
' sub TICKER_OFF(N%) ' erreur 5 if TICKER_STATE(N%,3)=0 then message "(5)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate TICKER_STATE(N%,1)=1 end_sub
' sub TICKER_TIME_SCALE(scale) ' erreur 6 if TICKER_STATE(N%,3)=0 then message "(6)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate TICKER_STATE(0,2)=scale end_sub
Dernière édition par silverman le Sam 19 Nov 2016 - 13:59, édité 27 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: multiple timers sans plantage : ruse de sioux!!! Lun 22 Fév 2016 - 0:26 | |
| Il faut vraiment que tu fasses des articles avec toutes ces astuces (un articles par astuce avec un bon code de démo, de toute façon tu les fais déjà les programmes de démo). Tu as beaucoup trop d'astuces super pratiques qui risqueraient d'être ratées par les gens qui passeront dans quelques mois.
En tout cas merci pour cette astuce.
C'est un peu le principe que j'utilisais dans mes jeux : j'utilisais un seul timer et j'implémentais un système de compteur de boucles qui appelaient une procédure quand leur valeur limite était dépassée. | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: multiple timers sans plantage : ruse de sioux!!! Lun 22 Fév 2016 - 11:55 | |
| Oulà! la 'littérature et moi... Je poste tout ça pour laisser une trace dans le forum; j'utilise très souvent l'outil de recherche pour trouver une solution à mes problèmes, ou m'en inspirer une dans le cas échéant. Ma devise est que si ce que je trouve m'aide, alors ce que je laisse doit aider! J'en ai pas fini avec ce système de ticker, bien que particulièrement efficace, je compte l'améliorer encore un poil, j'ai l'idée mais je dois tester. Plus le temp maintenant, il faut que j'aille bosser | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: multiple timers sans plantage : ruse de sioux!!! Mer 24 Fév 2016 - 19:14 | |
| V1.1: corrigé une erreur dans le code et ajout d'un message d'erreur si utilisation d'un TICKER non créé
MAJ premier post | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: multiple timers sans plantage : ruse de sioux!!! Ven 26 Fév 2016 - 19:24 | |
| V1.2 et +: support du 'mouvement basé sur le temps', ajout d'une info dans les messages d'erreur, programmation 'événement' ou 'séquentielle' MAJ premier post Exemple de 'mouvement basé sur le temps': - Code:
-
' variable d'état: ' TICKER_STATE(N%,0) : 0=false / 1=true (true=event en cours d'exécution) ' TICKER_STATE(N%,1) : 0=start / 1=pause ' TICKER_STATE(N%,2) : nb d'image/sec affiché entre 2 appels(si >1 alors on a perdu des images) ' TICKER_STATE(N%,3) : ticker_exist '
dim N%,delai%,vitesse_ang,angle,oldangle,elapsed_frame,tours,lasttime$
label fini
scene3d 1 width 1,300:height 1,300 : left 1,200
cam_position 0,0,5 3d_cube 1,2
caption 0,"barre d'espace pour terminer" alpha 2 :' pour afficher le nb de tours alpha 3 : top 3,20 :' pour afficher l'heure avant un tour alpha 4 : top 4,40 :' pour afficher l'heure apres un tour alpha 5 : top 5,60 :' pour afficher le nb d'images/sec perdues entre 2 appels
N%=10 : delai%=50 :' changer le délai ne change pas la vitesse de l'objet, mais la 'fluidité' de l'affichage TICKER(N%) : TICKER_INTERVAL(N%,delai%) :'
' pour la démo : un cube qui tourne à 6 tours par minute ' 6 tours par minute = (6 * 360 degrés / 60 secondes) = degrés par seconde et (1000 millisecondes / delai%) = nb d'images par seconde ' (degrés par seconde / images par seconde) = degrés par image vitesse_ang=(6*360/60)/(1000/delai%) ' ' affichage de statistique lasttime$=time$ caption 2,"nb de tours = 0" caption 3,lasttime$ caption 4,"00:00:00" ' repeat PERFORM_TICKER_EVENT(N%) :' surveille le temps if TICKER_STATE(N%,0)=1 :' dès que le délai du ticker est atteind elapsed_frame=TICKER_STATE(N%,2) :' nb d'image depuis le dernier appel(si elapsed_frame>1 alors on a perdu des images) angle=wrap_value(angle+(vitesse_ang*elapsed_frame)) :' angle = (angle pour 1 image) multiplié par (le nb d'image écoulé/perdu depuis le dernier appel) 3d_y_rotate 1,angle :' tourne l'objet end_if ' if oldangle>angle :' affiche des statistiques tours=tours+1 caption 2,"nb de tours = "+str$(tours) caption 3,lasttime$ caption 4,time$ lasttime$=time$ end_if ' oldangle=angle caption 5,"nb d'images/sec perdues="+str$(TICKER_STATE(N%,2) -1 ) :' nb d'images/sec perdues ' enlever le REM pour voir un nb d'images/sec perdues s'afficher ' wait 100 until scancode=32 goto fini :' quitte sans bruit
END ' ############################################################################## ' # # ' # Les SUBs V1.4 # ' # # ' ##############################################################################
' ############################################################################## ' sub TICKER(N%) if variable("memorise_tickers")=0 dim memorise_tickers ' un tableau pour gérer le tickers dim TICKER_STATE(9999,5) TICKER_STATE(0,2)=1 end_if ' erreur 1 edit N% : hide N% if TICKER_STATE(0,0)=0 TICKER_STATE(0,0)=NUMBER_TICKS end_if TICKER_STATE(N%,5)=1000 TICKER_STATE(N%,1)=0 TICKER_STATE(N%,4)=TICKER_STATE(0,0)+TICKER_STATE(N%,5) TICKER_STATE(N%,3)=1 TICKER_STATE(N%,2)=1 end_sub
' sub TICKER_INTERVAL(N%,delai%) ' erreur 2 if TICKER_STATE(N%,3)=0 then message "(2)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate if delai%<1 then message "(2)TICKER n°"+str$(N%)+": Délai nul ou négatif" : terminate TICKER_STATE(N%,4)=TICKER_STATE(N%,4)-TICKER_STATE(N%,5)+delai% TICKER_STATE(N%,5)=delai% end_sub
' sub PERFORM_TICKER_EVENT(N%) ' erreur 3 if TICKER_STATE(N%,3)=0 then message "(3)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate if TICKER_STATE(0,1)=0 TICKER_STATE(0,0)=NUMBER_TICKS TICKER_STATE(0,1)=N% else if TICKER_STATE(0,1)=N% then TICKER_STATE(0,0)=NUMBER_TICKS end_if TICKER_STATE(N%,0)=0 if TICKER_STATE(0,0)>=TICKER_STATE(N%,4) TICKER_STATE(N%,0)=1 TICKER_STATE(N%,2)=TICKER_STATE(0,2)*int((TICKER_STATE(0,0)-TICKER_STATE(N%,4))/TICKER_STATE(N%,5))+1 TICKER_STATE(N%,4)=TICKER_STATE(0,0)-mod(TICKER_STATE(0,0)-TICKER_STATE(N%,4),TICKER_STATE(N%,5))+TICKER_STATE(N%,5) if TICKER_STATE(N%,1)=0 text N%,str$(NUMBER_TICKS) end_if end_if end_sub
' sub TICKER_ON(N%) ' erreur 4 if TICKER_STATE(N%,3)=0 then message "(4)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate TICKER_STATE(N%,1)=0 end_sub
' sub TICKER_OFF(N%) ' erreur 5 if TICKER_STATE(N%,3)=0 then message "(5)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate TICKER_STATE(N%,1)=1 end_sub
' sub TICKER_TIME_SCALE(scale) ' erreur 5 if TICKER_STATE(N%,3)=0 then message "(5)Le TICKER n°"+str$(N%)+" n'existe pas" : terminate TICKER_STATE(0,2)=scale end_sub
' ############################################################################## ' fini: terminate
Même lorsque le cube se fige quand on déplace la fenêtre, il prend la position qu'il aurait dû avoir si rien n'avait interrompu son mouvement
Dernière édition par silverman le Mar 15 Mar 2016 - 18:34, édité 4 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: multiple timers sans plantage : ruse de sioux!!! Ven 26 Fév 2016 - 21:06 | |
| oui je pense que c'est le genre de principe utilisé dans les jeux multijoueur en 3D pour pallier les "lags" que peut avoir ponctuellement un joueur | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: multiple timers sans plantage : ruse de sioux!!! Dim 6 Mar 2016 - 19:51 | |
| v1.3, remplacé le couple 'alpha/trigger_click' qui aléatoirement ne détecte pas toujours les évements, par le couple 'edit/on_change', plus fiable
MAJ premier post | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: multiple timers sans plantage : ruse de sioux!!! Mar 15 Mar 2016 - 19:09 | |
| EDIT du 15/03/16 : v1.4, modifié et renommé la sub ON_TICKER(N%,objet%) en PERFORM_TICKER_EVENT(N%). L'objet associé à un ticker est créé automatiquement, il possède le même numéro que le ticker(qu'il faut maintenant considérer comme un objet à part entière!). Programmation encore plus simple!
MAJ premier post | |
| | | Contenu sponsorisé
| Sujet: Re: multiple timers sans plantage : ruse de sioux!!! | |
| |
| | | | multiple timers sans plantage : ruse de sioux!!! | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |