2x Countdown gleichzeitig runterzählen

  • Hallo,

    ich bin es wieder. ;)

    Ich stehe vor folgendes Problem:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 112, 116, 192, 124)
    $Label1 = GUICtrlCreateLabel("Klick", 32, 32, 44, 17)
    $Label2 = GUICtrlCreateLabel("Klick", 32, 64, 44, 17)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Label1
    For $i = 5 to 0 step -1
    GUICtrlSetData($Label1, $i)
    Sleep(900)
    Next
    MsgBox(0, "", "Funktion 1")

    Case $Label2
    For $i = 5 to 0 step -1
    GUICtrlSetData($Label2, $i)
    Sleep(1000)
    Next
    MsgBox(0, "", "Funktion 2")
    EndSwitch
    WEnd

    [/autoit]

    Dabei stehe ich vor zwei Problemen: Was kann ich tun, damit beide Counter nach Mausklick parallel runterzählen?
    Bis jetzt ist es so, dass sobald der erste Counter runtergezählt hat, erst dann der zweiter Counter beginnt, herunterzuzählen.

    Und meine zweite Frage: Sobald auf Label1 bzw. Label2 während des runterzählens erneut drauf geklickt wird, soll es wieder von vorne anfangen, herunterzuzählen.

    Hat jemand eine Idee? Ich wäre wirklich sehr verbunden, wenn jemand mir hierbei helfen könnte.

    Gruß

    Einmal editiert, zuletzt von Hausuni (11. Juni 2012 um 18:08)

  • Ich habe das jetzt mal angewendet und eingebaut, doch irgendwie, was höchstwahrscheinlich auch an mir liegt, scheint das nicht zu klappen :(

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 112, 116, 192, 124)
    $Label1 = GUICtrlCreateLabel("Klick", 32, 32, 44, 17)
    $Label2 = GUICtrlCreateLabel("Klick", 32, 64, 44, 17)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Label1
    AdlibRegister("deine_counter_1", 1000)
    Case $Label2
    AdlibRegister("deine_counter_2", 1000)
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func deine_counter_1()
    For $i = 5 to 0 step -1
    GUICtrlSetData($Label1, $i)
    Sleep(900)
    Next
    MsgBox(0, "", "Funktion 1")
    AdlibUnRegister("deine_counter_1")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func deine_counter_2()
    For $i = 5 to 0 step -1
    GUICtrlSetData($Label2, $i)
    Sleep(1000)
    Next
    MsgBox(0, "", "Funktion 2")
    AdlibUnRegister("deine_counter_2")
    EndFunc

    [/autoit]
  • So vielleicht?:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 112, 116, 192, 124)
    $Label1 = GUICtrlCreateLabel("Klick", 32, 32, 44, 17)
    $Label2 = GUICtrlCreateLabel("Klick", 32, 64, 44, 17)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    Global $iCounter1 = 5, $iCounter2 = 5

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Label1
    AdlibRegister("deine_counter_1", 1000)
    Case $Label2
    AdlibRegister("deine_counter_2", 1000)
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func deine_counter_1()
    If $iCounter1 >= 0 Then
    GUICtrlSetData($Label1, $iCounter1)
    $iCounter1 -= 1
    Else
    AdlibUnRegister("deine_counter_1")
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func deine_counter_2()
    If $iCounter2 >= 0 Then
    GUICtrlSetData($Label2, $iCounter2)
    $iCounter2 -= 1
    Else
    AdlibUnRegister("deine_counter_2")
    EndIf
    EndFunc

    [/autoit]

  • Vielen dank, das ist genau das, was ich suchte. :)
    Wie mache ich es dann, wenn es erneut von vorne herunterzählen soll, wenn ich erneut auf Label1 (bzw. Label2) klicke (bevor es 0 erreicht)?
    Und: Wenn es auf 0 ist, und ich erneut drauf klicke, fängt es nicht von vorne an :/

  • Hi, so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 112, 116, 192, 124)
    $Label1 = GUICtrlCreateLabel("Klick", 32, 32, 44, 17)
    $Label2 = GUICtrlCreateLabel("Klick", 32, 64, 44, 17)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    Global $iCounter1 = 5, $iCounter2 = 5

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Label1
    AdlibRegister("deine_counter_1", 1000)
    $iCounter1 = 5
    $iCounter2 = 5
    Case $Label2
    AdlibRegister("deine_counter_2", 1000)
    $iCounter1 = 5
    $iCounter2 = 5
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func deine_counter_1()
    If $iCounter1 >= 0 Then
    GUICtrlSetData($Label1, $iCounter1)
    $iCounter1 -= 1
    Else
    AdlibUnRegister("deine_counter_1")
    EndIf
    EndFunc ;==>deine_counter_1

    [/autoit] [autoit][/autoit] [autoit]

    Func deine_counter_2()
    If $iCounter2 >= 0 Then
    GUICtrlSetData($Label2, $iCounter2)
    $iCounter2 -= 1
    Else
    AdlibUnRegister("deine_counter_2")
    EndIf
    EndFunc ;==>deine_counter_2

    [/autoit]
  • Hi,

    vielen dank für eure Hilfe. :)

    Bei:

    [autoit]

    Case $Label1
    AdlibRegister("deine_counter_1", 1000)
    $iCounter1 = 5
    $iCounter2 = 5
    Case $Label2
    AdlibRegister("deine_counter_2", 1000)
    $iCounter1 = 5
    $iCounter2 = 5

    [/autoit]

    ev. Counter2 in Label1, und Counter1 und Label2 hatte ich entfernt, dann war es genau das, wonach ich suchte.

    Vielen dank für eure Hilfe. :)

  • Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 112, 116, 192, 124)
    $Label1 = GUICtrlCreateLabel("Klick", 32, 32, 44, 17)
    $Label2 = GUICtrlCreateLabel("Klick", 32, 64, 44, 17)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    Global $iCounter1 = 5, $iCounter2 = 5
    Global $fCount1 = False, $fCount2 = False

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Label1
    If $fCount1 = False Then
    $fCount1 = True
    AdlibRegister("deine_counter_1", 1000)
    Else
    $iCounter1 = 5
    EndIf
    Case $Label2
    If $fCount2 = False Then
    $fCount2 = True
    AdlibRegister("deine_counter_2", 1000)
    Else
    $iCounter2 = 5
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func deine_counter_1()
    If $iCounter1 >= 0 Then
    GUICtrlSetData($Label1, $iCounter1)
    $iCounter1 -= 1
    Else
    $fCount1 = False
    AdlibUnRegister("deine_counter_1")
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func deine_counter_2()
    If $iCounter2 >= 0 Then
    GUICtrlSetData($Label2, $iCounter2)
    $iCounter2 -= 1
    Else
    $fCount1 = False
    AdlibUnRegister("deine_counter_2")
    EndIf
    EndFunc

    [/autoit]

    €: Ach verdammt, ich muss öfter aktualisieren.