Page 1 sur 1
[R] Bug d'accélération involontaire d'un script ?
Posté : mer. 19 juin 2013 09:35
par Utilisateur 3643 supprimé
Bonjour !
Aujourd'hui je me suis dit, pourquoi ne pas faire une jolie GUI multi color
Donc j'ai créé ce petit script:
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $gui = GUICreate("Rainbow gui", 625, 443, 192, 124)
GUISetState(@SW_SHOW)
AdlibRegister("_rainbow",10)
While 1
$msg = GUIGetMsg()
Switch $msg
Case $gui_event_close
Exit
EndSwitch
WEnd
Func _rainbow()
$rouge = 255
$vert = 0
$bleu = 0
For $i = 0 to 255
$vert = $i
GUISetBkColor("0x"&Hex($rouge,2) & Hex($vert,2) &Hex($bleu,2))
Sleep(10)
Next
For $i = 0 to 255
$bleu = $i
$rouge = $rouge-$i
GUISetBkColor("0x"&Hex($rouge,2) & Hex($vert,2) &Hex($bleu,2))
Sleep(10)
Next
For $i = 0 to 255
$rouge = $i
$vert = $vert-$i
GUISetBkColor("0x"&Hex($rouge,2) & Hex($vert,2) &Hex($bleu,2))
Sleep(10)
Next
EndFunc
Mais j'ai deux problèmes avec celui-ci
1 - Les couleur se changent correctement et calmement pour aller du rouge au jaune mais après celui-ci change les couleurs de plus en plus vite, jusqu'à retourner au début de la boucle.
2 - Le GuiGetMsg ne répond pas (je ne peux pas cliquer sur mes controls)
Merci d'avance pour vos réponses et bonne journée !

Re: [..] Bug d'accélération involontaire d'un script ?
Posté : mer. 19 juin 2013 12:38
par sylvanie
Bonjour
1) Il y a une erreur dans l'algo de dégradé, vous reprenez la valeur courante que vous décrémentez au lieu de repartir de 255
2) Les messages de fenêtre ne peuvent pas être lus, car les boucles for ne rendent pas la main assez fréquemment à la boucle de gestion de la fenêtre. Du coups, on peut insérer une lecture d'évènement dans chaque tour de boucle (fonctionnel, mais pas très propre...)
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $gui = GUICreate("Rainbow gui", 625, 443, 192, 124)
GUISetState(@SW_SHOW)
AdlibRegister("_rainbow")
While 1
Listen_Gui()
WEnd
Func Listen_Gui()
$msg = GUIGetMsg()
Switch $msg
Case $gui_event_close
Exit
EndSwitch
EndFunc
Func _rainbow()
AdlibUnRegister("_rainbow")
$rouge = 255
$vert = 0
$bleu = 0
For $i = 0 To 255
$vert = $i
GUISetBkColor("0x" & Hex($rouge, 2) & Hex($vert, 2) & Hex($bleu, 2))
Listen_Gui()
Sleep(10)
Next
$rougeref=255
For $i = 0 To 255
$bleu = $i
$rouge = $rougeref - $i
GUISetBkColor("0x" & Hex($rouge, 2) & Hex($vert, 2) & Hex($bleu, 2))
Listen_Gui()
Sleep(10)
Next
$vertref=255
For $i = 0 To 255
$rouge = $i
$vert = $vertref - $i
GUISetBkColor("0x" & Hex($rouge, 2) & Hex($vert, 2) & Hex($bleu, 2))
Listen_Gui()
Sleep(10)
Next
AdlibRegister("_rainbow")
EndFunc ;==>_rainbow
Re: [..] Bug d'accélération involontaire d'un script ?
Posté : mer. 19 juin 2013 21:08
par Utilisateur 3643 supprimé
Ca marche parfaitement merci
