Script macht Probleme...

  • Nabend zusamm.

    Vllt kann mir einer helfen, ich komm nich mehr weiter.

    Ich bin grad dabei, ne UDF zu machen, mit der man mehrere Effekte bei GUIs machen kann.

    Ich hab bis jetz 3 Funktionen. 2 davon funzen einwandfrei.
    Nur die dritte macht probleme. _GUIFlyingFadeIn soll bewirken,
    dass die GUI beim start einfliegen soll, und gleichzeitig langsam sichtbar werden soll.

    Also das gleiche wie bei _GUIFadeIn ( GUIFadeOut )

    Hier mal das Script, wie gesagt, das dritte macht Probleme.

    Spoiler anzeigen
    [autoit]

    ; ====================================================
    ; Funktionsname: _GUIFadeIn
    ; Funktion: Lässt das Fenster erscheinen (ersetzt auch GUISetState).
    ;
    ; Parameter: $WHnd = Handle des Fensters
    ; $Speed = Geschwindigkeit, mit der das Fenster ersteinen soll. (1 = Sehr langsam bis 255 = erscheint sofort)
    ; $Start = Transparents, die das Fenster zum Start haben soll.
    ; $End = Transparents, die das Fenster zum Schluss haben soll.
    ;
    ; Autor: Commander21
    ; ====================================================
    Func _GUIFadeIn ($WHnd, $Speed, $Start, $End)
    WinSetTrans ($WHnd, "", $Start)
    GUISetState (@SW_SHOW, $WHnd)
    For $i = $Start To $End Step $Speed
    WinSetTrans ($WHnd, "", $i)
    Sleep (1)
    Next
    EndFunc ;==> _GUIFadeIn
    ; ====================================================
    ; Funktionsname: _GUIFadeOut
    ; Funktion: Lässt das Fenster verschwinden.
    ;
    ; Parameter: $WHnd = Handle des Fensters
    ; $Speed = Geschwindigkeit, mit der das Fenster verschwinden soll. (1 = Sehr langsam bis 255 = verschwindet sofort)
    ; $Start = Transparents, die das Fenster zum Start haben soll.
    ; $End = Transparents, die das Fenster zum Schluss haben soll.
    ;
    ; Autor: Commander21
    ; ====================================================
    Func _GUIFadeOut ($WHnd, $Speed, $Start, $End)
    For $i = $Start To $End Step -$Speed
    WinSetTrans ($WHnd, "", $i)
    Sleep (1)
    Next
    EndFunc ;==> _GUIFadeOut
    ; ====================================================
    ; Funktionsname: _GUIFlyingFadeIn
    ; Funktion: Lässt das Fenster erscheinen und von einer Seite einfliegen. (Ersetzt auch GUISetState).
    ;
    ; Parameter: $WHnd = Handle des Fensters
    ; $Speed = Geschwindigkeit, mit der das Fenster verschwinden soll. (1 = Sehr langsam bis 255 = verschwindet sofort)
    ; $Start = Transparents, die das Fenster zum Start haben soll.
    ; $End = Transparents, die das Fenster zum Schluss haben soll.
    ; $StartPosX = X-Position des Fensters, von wo es starten soll.
    ; $StartPosY = Y-Position des Fensters, von wo es starten soll.
    ; $EndPosX = X-Position des Fensters, wo es stehen beleiben soll.
    ; $EndPosY = Y-Position des Fensters, wo es stehen bleiben soll.
    ; $MoveSpeed = Geschwindigkeit, mit der sich das Fenster bewegen sol (1 = Sehr schnell bis 100 = Sehr langsam).
    ;
    ; Autor: Commander21
    ; ====================================================
    Func _GUIFlyingFadeIn ($WHnd, $Speed, $Start, $End, $StartPosX, $StartPosY, $EndPosX, $EndPosY, $MoveSpeed)
    WinMove ($WHnd, "", $StartPosX, $StartPosY)
    WinSetTrans ($WHnd, "", $Start)
    GUISetState (@SW_SHOW, $WHnd)
    $WinSize = WinGetPos ($WHnd, "")
    For $i = $Start To $End Step $Speed
    WinSetTrans ($WHnd, "", $i)
    Sleep (1)
    WinMove ($WHnd, "", $EndPosX, $EndPosY, $WinSize[2], $WinSize[3], $MoveSpeed)
    Next
    EndFunc ;==> _GUIFlyingFadeIn

    [/autoit]


    Will das Script noch mit vielen weiteren Effekten füttern. doch dazu muss ich erstmal wissen, warum das net funzt...


    MfG

  • Ja versuch mal die Funktion _GUIFlyingFadeIn aus. das wirst sehn ^^

    Ich kapier nur nich, wie ich es schaffe, dass das fenster langsam sichtbar wird, und
    gleichzeitig von die position ändert...

  • Ich habs nicht ausprobiert aber iwie wird beim Winmove das $i nicht verwendet
    Ich glaub da ändert sich gar nix kann des sein? :D

    Padmak

  • Ich hab i.wie kein plan, wie ich das machen soll, hat vllt einer von euch ne Idee, wie man es machen könnte?

  • Hallo Commander21,

    im folgenden Script musst du noch Formeln erstellen, aber es fliegt auch so schon

    Spoiler anzeigen
    [autoit]

    ; *** Start added by AutoIt3Wrapper ***
    #include <GUIConstantsEx.au3>
    ; *** End added by AutoIt3Wrapper ***
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    Global $hGui = GUICreate("Test Flying",200,200,0,0)
    ;Func _GUIFlyingFadeIn ($WHnd, $Speed, $Start, $End, $StartPosX, $StartPosY, $EndPosX, $EndPosY, $MoveSpeed)
    _GUIFlyingFadeIn($hGui,1,1,255,0,0,400,400,5) ;hier klappts ja ganz gut

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

    GUIDelete($hGui)
    Global $hGui = GUICreate("Test Flying",200,200,0,200)
    ;Func _GUIFlyingFadeIn ($WHnd, $Speed, $Start, $End, $StartPosX, $StartPosY, $EndPosX, $EndPosY, $MoveSpeed)
    _GUIFlyingFadeIn($hGui,1,1,150,0,200,400,280,5) ;na ja

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

    GUIDelete($hGui)
    Global $hGui = GUICreate("Test Flying",200,200,300,200)
    ;Func _GUIFlyingFadeIn ($WHnd, $Speed, $Start, $End, $StartPosX, $StartPosY, $EndPosX, $EndPosY, $MoveSpeed)
    _GUIFlyingFadeIn($hGui,1,1,255,300,200,10,18,5) ;klappt garnicht also Formel erstellen,
    ;die für alle Möglicheiten gute Optik bringt

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

    while 1
    $iMsg = GUIGetMsg()
    Select
    Case $iMsg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    ; ====================================================
    ; Funktionsname: _GUIFadeIn
    ; Funktion: Lässt das Fenster erscheinen (ersetzt auch GUISetState).
    ;
    ; Parameter: $WHnd = Handle des Fensters
    ; $Speed = Geschwindigkeit, mit der das Fenster ersteinen soll. (1 = Sehr langsam bis 255 = erscheint sofort)
    ; $Start = Transparents, die das Fenster zum Start haben soll.
    ; $End = Transparents, die das Fenster zum Schluss haben soll.
    ;
    ; Autor: Commander21
    ; ====================================================
    Func _GUIFadeIn ($WHnd, $Speed, $Start, $End)
    WinSetTrans ($WHnd, "", $Start)
    GUISetState (@SW_SHOW, $WHnd)
    For $i = $Start To $End Step $Speed
    WinSetTrans ($WHnd, "", $i)
    Sleep (10)
    Next
    EndFunc ;==> _GUIFadeIn
    ; ====================================================
    ; Funktionsname: _GUIFadeOut
    ; Funktion: Lässt das Fenster verschwinden.
    ;
    ; Parameter: $WHnd = Handle des Fensters
    ; $Speed = Geschwindigkeit, mit der das Fenster verschwinden soll. (1 = Sehr langsam bis 255 = verschwindet sofort)
    ; $Start = Transparents, die das Fenster zum Start haben soll.
    ; $End = Transparents, die das Fenster zum Schluss haben soll.
    ;
    ; Autor: Commander21
    ; ====================================================
    Func _GUIFadeOut ($WHnd, $Speed, $Start, $End)
    For $i = $Start To $End Step -$Speed
    WinSetTrans ($WHnd, "", $i)
    Sleep (1)
    Next
    EndFunc ;==> _GUIFadeOut
    ; ====================================================
    ; Funktionsname: _GUIFlyingFadeIn
    ; Funktion: Lässt das Fenster erscheinen und von einer Seite einfliegen. (Ersetzt auch GUISetState).
    ;
    ; Parameter: $WHnd = Handle des Fensters
    ; $Speed = Geschwindigkeit, mit der das Fenster verschwinden soll. (1 = Sehr langsam bis 255 = verschwindet sofort)
    ; $Start = Transparents, die das Fenster zum Start haben soll.
    ; $End = Transparents, die das Fenster zum Schluss haben soll.
    ; $StartPosX = X-Position des Fensters, von wo es starten soll.
    ; $StartPosY = Y-Position des Fensters, von wo es starten soll.
    ; $EndPosX = X-Position des Fensters, wo es stehen beleiben soll.
    ; $EndPosY = Y-Position des Fensters, wo es stehen bleiben soll.
    ; $MoveSpeed = Geschwindigkeit, mit der sich das Fenster bewegen sol (1 = Sehr schnell bis 100 = Sehr langsam).
    ;
    ; Autor: Commander21
    ; ====================================================
    Func _GUIFlyingFadeIn ($WHnd, $Speed, $Start, $End, $StartPosX, $StartPosY, $EndPosX, $EndPosY, $MoveSpeed)
    WinMove ($WHnd, "", $StartPosX, $StartPosY)
    WinSetTrans ($WHnd, "", $Start)
    GUISetState (@SW_SHOW, $WHnd)
    $WinSize = WinGetPos ($WHnd, "")
    For $i = $Start To $End Step $Speed
    $iX = 1; ;muss über Formel errechnet werden, damit es gleichzeitig mit höchster Transparenz an seiner Stelle ist
    $iY = 1; ;muss über Formel errechnet werden, damit es gleichzeitig mit höchster Transparenz an seiner Stelle ist
    WinSetTrans ($WHnd, "", $i)
    Sleep (10)
    if $StartPosX <= $EndPosX then $StartPosX = $StartPosX + $iX
    if $StartPosX <= $EndPosY then $StartPosY = $StartPosY + $iY
    WinMove ($WHnd, "", $StartPosX, $StartPosY);, $WinSize[2], $WinSize[3], $MoveSpeed)
    Next
    EndFunc ;==> _GUIFlyingFadeIn

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

    Edit1 Skript im Spoiler ausgetauscht, jetzt 3 fliegende Fenster, hieran erkennst du, warum du eine Formel entwickeln must, da ja einerseits die Gui ohne zu ruckeln fliegen soll und andererseits am Ende des Fluges ihr Enstadium der Transparenz erreicht haben soll,

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (27. April 2009 um 00:09)

  • Hi, also so ganz steig ich noch net dahinter, du müsstest mir den folgenden Satz nochmal erklären:

    [autoit]

    $iX = 1; $i ;muss über Formel errechnet werden, damit es gleichzeitig mit höchster Transparenz an seiner Stelle ist

    [/autoit]

    PS: Hat bis morgen zeit, ich geh jetz ins Bett, spät genug ^^

    Gn8