Hallo @all,
ich versuche gerade einen Matrix-Screensaver zu schreiben und brauche Hilfe:
Am Anfang werden erstmal einige Labels mit Buchstaben bzw. Zahlen erstellt, dann sollen diese gleichzeitig geupdatet werden über mehrere Adlibs. Das klappt leider nicht, die Adlibs werden leider immer hintereinander ausgeführt, ich habe die AutoIt-Version 3.3.5.1. Beta. Was mache ich falsch?
Hier der Quelltext:
Spoiler anzeigen
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Global $hWnd = GUICreate("Matrix Screensaver", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
Global $Breite = Round(Number(@DesktopWidth), -1)
Global $Hoehe = Round(Number(@DesktopHeight), -1)
Global $Labels[1]
Global $String = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Global $Sleep1 = 1
Global $Sleep2 = 10
HotKeySet("{ESC}", "Ende")
GUIRegisterMsg($WM_LBUTTONDOWN, "Ende")
GUISetBkColor(0x000000)
GUISetCursor(16)
GUISetState()
;;;Labels erstellen
For $i1 = 1 to $Breite Step 20
For $i2 = 1 to $Hoehe Step 20
$r1 = StringMid($String, Random(1, 62, 1) , 1)
$Label = GUICtrlCreateLabel($r1, $i1, $i2)
_ArrayAdd($Labels, $Label)
GUICtrlSetColor(-1, 0x09FF00)
;Sleep(1)
Next
Next
;;;Die Adlibs
;;;Werden leider NICHT gleichzeitig ausgeführt
AdlibRegister("a", 300)
AdlibRegister("b", 300)
AdlibRegister("c", 300)
AdlibRegister("d", 300)
AdlibRegister("e", 300)
AdlibRegister("f", 300)
AdlibRegister("g", 300)
While True
#cs
For $i3 = 1 to UBound($Labels) - 2
$r2 = StringMid($String, Random(1, 62, 1) , 1)
GUICtrlSetData($Labels[$i3], $r2)
Sleep($Sleep1)
Next
Sleep(10)
#ce
Sleep(100)
WEnd
;;;Die Adlib-Funktionen
Func a()
For $counter = 1 to 43 Step 1
$random = StringMid($String, Random(1, 62, 1) , 1)
GUICtrlSetData($Labels[$counter], $random)
Sleep(1)
Next
Sleep(10)
EndFunc
Func b()
For $counter = 44 to 87 Step 1
$random = StringMid($String, Random(1, 62, 1) , 1)
GUICtrlSetData($Labels[$counter], $random)
Sleep(1)
Next
Sleep(10)
EndFunc
Func c()
For $counter = 88 to 131 Step 1
$random = StringMid($String, Random(1, 62, 1) , 1)
GUICtrlSetData($Labels[$counter], $random)
Sleep(1)
Next
Sleep(10)
EndFunc
Func d()
For $counter = 132 to 175 Step 1
$random = StringMid($String, Random(1, 62, 1) , 1)
GUICtrlSetData($Labels[$counter], $random)
Sleep(1)
Next
Sleep(10)
EndFunc
Func e()
For $counter = 176 to 219 Step 1
$random = StringMid($String, Random(1, 62, 1) , 1)
GUICtrlSetData($Labels[$counter], $random)
Sleep(1)
Next
Sleep(10)
EndFunc
Func f()
For $counter = 220 to 263 Step 1
$random = StringMid($String, Random(1, 62, 1) , 1)
GUICtrlSetData($Labels[$counter], $random)
Sleep(1)
Next
Sleep(10)
EndFunc
Func g()
For $counter = 264 to 307 Step 1
$random = StringMid($String, Random(1, 62, 1) , 1)
GUICtrlSetData($Labels[$counter], $random)
Sleep(1)
Next
Sleep(10)
EndFunc
Func Ende()
Exit
AdlibUnRegister()
EndFunc ;==>Ende