Hiho,
ich habe vor einiger Zeit mal ein Script in Händen gehalten, welches u.A. ein animiertes Textlabel besaß. Es handelte sich dabei um einen Countdown, der ungefähr so aussah:
Zitat.......... 5 ..........
Links und rechts die Punkte haben sich reduziert und die Zahl ging halt auch runter. Ist etwas schwierig zu erklären, ich versuchs anders:
ZitatAlles anzeigen......... 5 .........
........ 5 ........
....... 5 .......
...... 5 ......
..... 5 .....
.... 5 ....
... 5 ...
.. 5 ..
. 5 .
......... 4 .........
usw...
So muss man sich das vorstellen
Alle 100ms verschwindet halt links und rechts ein Punkt, nach 1000ms reduzierte sich die Zahl und es ging von vorn los.
Also im Prinzip eine Art animierter Countdown.
Ich bin schon die ganze Zeit am Rätseln, wie man das performant lösen kann. Mein Ansatz:
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]Global $time = 3
[/autoit][autoit][/autoit][autoit]#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 150, 50, -1, -1)
$timer = GUICtrlCreateLabel(".......... " & $time & " ..........", 5, 5, 100, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
AdlibRegister("anim", 100)
[/autoit][autoit][/autoit][autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func anim()
If StringLeft(GUICtrlRead($timer), 1) = "." Then
GUICtrlSetData($timer, StringTrimRight(StringTrimLeft($time, 1), 1))
Else
$cnt = $time - 1
$time = $cnt
If $time >= 1 Then
GUICtrlSetData($timer, ".......... " & $time & " ..........")
EndIf
EndIf
EndFunc
Aber das haut leider nicht wirklich hin ![]()