FUNCIÓN para "ANIMAR" botones intro/out y "VIBRAR"

y programas personales para otros como tu, puede que te corrijan ;)

FUNCIÓN para "ANIMAR" botones intro/out y "VIBRAR"

Notapor yasmany » 22 Feb 2017, 06:50

Hola con todos, les dejo un par de funciones que he realizado, simula animación de entrada y salida de botones, de igual forma simula una breve vibración.

Func buttonAnimation($hWnd, $idControl, $introMode)
- nombre de la gui
- id del boton
- modo de animacion

Func sVibrar ($hWnd, $idControl)
- nombre de la gui
- id del boton

Espero les pueda servir, es utilizable sin importar la posición de los botones; pueden modificarlo a su gusto y si desean mejorarlo enhorabuena. :smt002
Saludos :smt024

Código: Seleccionar todo
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Opt("GUICloseOnESC", 0)
Opt("GUIOnEventMode", 1)

$myGui = GUICreate("Ejemplo", 308, 415, -1, -1)
GUISetBkColor(0x646464)

$Label2 = GUICtrlCreateLabel("Label2", 8, 88, 36, 17)
GUICtrlSetBkColor(-1, 0xA6CAF0)
$Label3 = GUICtrlCreateLabel("Label3", 8, 136, 36, 17)
GUICtrlSetBkColor(-1, 0xA6CAF0)
$Label4 = GUICtrlCreateLabel("Label4", 8, 176, 36, 17)
GUICtrlSetBkColor(-1, 0xA6CAF0)

$Input1 = GUICtrlCreateInput("Input1", 56, 88, 97, 21)
$Input2 = GUICtrlCreateInput("Input2", 56, 136, 97, 21)
$Input3 = GUICtrlCreateInput("Input3", 56, 176, 97, 21)
$Label1 = GUICtrlCreateLabel("Mi titulo", 8, 16, 290, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFFFF)

$List1 = GUICtrlCreateList("", 168, 88, 121, 110)

$Button1 = GUICtrlCreateButton("Salir", 96, 352, 107, 41)
GUICtrlSetOnEvent(-1, "_cerrarInterfaz")

GUISetOnEvent($GUI_EVENT_RESTORE, "_restoreInterfaz")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "_minimizarInterfaz")
GUISetOnEvent($GUI_EVENT_CLOSE, "_cerrarInterfaz")

;Oculto todos los botones para que tenga una especie de entrada
For $i = $Label2 To $Button1
   GUICtrlSetState($i, $GUI_HIDE)
Next
;~ ; esto lo pueden personalizar

GUISetState(@SW_SHOW)

Sleep(500)

;animacion------------------------------------------
buttonAnimation($myGui, $Label1, "down")

buttonAnimation($myGui, $Label2, "left")
buttonAnimation($myGui, $Input1, "right")

buttonAnimation($myGui, $Label3, "left")
buttonAnimation($myGui, $Input2, "right")

buttonAnimation($myGui, $Label4, "left")
buttonAnimation($myGui, $Input3, "right")

buttonAnimation($myGui, $List1, "right")

buttonAnimation($myGui, $Button1, "up")
;----------------------------------------------------
sVibrar($myGui, $Input1)
sVibrar($myGui, $Input2)
sVibrar($myGui, $Input3)
;----------------------------------------------------

While 1
   Sleep(100)
WEnd

;con el STEP o el SLEEP se acelera la animacion
Func buttonAnimation($hWnd, $idControl, $introMode)
   Local $cPosDos
   ;--------------- INFO SIZE BUTTON ----------------------------
   Local $cPos = ControlGetPos($hWnd, "", $idControl)
   ConsoleWrite("Position: " & $cPos[0] & ", " & $cPos[1] & @CRLF)
   ConsoleWrite("Size: " & $cPos[2] & ", " & $cPos[3] & @CRLF & @CRLF)

   Local $aClientSize = WinGetClientSize($hWnd) ; toma referencia al tamaño de la ventana
   ConsoleWrite("SIZE WINDOWS" & @CRLF)
   ConsoleWrite("Width: " & $aClientSize[0] & @CRLF & "Height: " & $aClientSize[1] & @CRLF & @CRLF)
   ;--------------- INTRO ---------------------------------------
   If $introMode = "right" Then ; *** Ingreso por la derecha

      ControlMove($hWnd, "", $idControl, $aClientSize[0], $cPos[1])
      GUICtrlSetState($idControl, $GUI_SHOW)
      $cPosDos = ControlGetPos($hWnd, "", $idControl)

      For $i = $cPosDos[0] To $cPos[0] Step -10 ; $cPos[0] es la posicion X que se obtuvo primero
         Sleep(10)
         ControlMove($hWnd, "", $idControl, $i, $cPos[1])
      Next

   ElseIf $introMode = "left" Then ; *** Ingreso por la izquierda

      ControlMove($hWnd, "", $idControl, -($cPos[0] + $cPos[2]), $cPos[1]) ; se mueve a la izquierda para de ahi salir
      GUICtrlSetState($idControl, $GUI_SHOW)
      $cPosDos = ControlGetPos($hWnd, "", $idControl)

      For $i = $cPosDos[0] To $cPos[0] Step 3 ; $cPos[0] es la posicion X que se obtuvo primero
         Sleep(10)
         ControlMove($hWnd, "", $idControl, $i, $cPos[1])
      Next

   ElseIf $introMode = "down" Then  ; *** Ingreso desde abajo

      ControlMove($hWnd, "", $idControl, $cPos[0], -1 + (-$cPos[3]))
      $cPosDos = ControlGetPos($hWnd, "", $idControl)
      GUICtrlSetState($idControl, $GUI_SHOW)

      $cPosDos = ControlGetPos($hWnd, "", $idControl)
      For $i = $cPosDos[1] To $cPos[1] Step 10
         Sleep(25)
         ControlMove($hWnd, "", $idControl, $cPosDos[0], $i)
      Next

   ElseIf $introMode = "up" Then  ; *** Ingreso de arriba hacia abajo

      ControlMove($hWnd, "", $idControl, $cPos[0], $aClientSize[1])
      GUICtrlSetState($idControl, $GUI_SHOW)
      $cPosDos = ControlGetPos($hWnd, "", $idControl)

      For $i = $cPosDos[1] To $cPos[1] Step -10
         Sleep(25)
         ControlMove($hWnd, "", $idControl, $cPosDos[0], $i)
      Next

   ElseIf $introMode = "down-out" Then ;  ; *** Salida por abajo
      ; cuando el efecto es de salida se debe
      ;restablecer en HIDE a la posicion original

      For $i = $cPos[1] To $aClientSize[1] Step 5
         Sleep(10)
         ControlMove($hWnd, "", $idControl, $cPos[0], $i)
      Next
      GUICtrlSetState($idControl, $GUI_HIDE) ; lo oculta y
      ControlMove($hWnd, "", $idControl, $cPos[0], $cPos[1]) ; restablece a la posición para el nuevo efecto que se desee aplicar

   ElseIf $introMode = "up-out" Then  ; *** Salida por arriba

      For $i = $cPos[1] To -1 + (-$cPos[3]) Step -5
         Sleep(10)
         ControlMove($hWnd, "", $idControl, $cPos[0], $i)
      Next
      GUICtrlSetState($idControl, $GUI_HIDE)
      ControlMove($hWnd, "", $idControl, $cPos[0], $cPos[1])

   ElseIf $introMode = "left-out" Then  ; *** Salida por la izquierda

      For $i = $cPos[0] To -1 + (-$cPos[2]) Step -8
         Sleep(10)
         ControlMove($hWnd, "", $idControl, $i, $cPos[1])
      Next
      GUICtrlSetState($idControl, $GUI_HIDE)
      ControlMove($hWnd, "", $idControl, $cPos[0], $cPos[1])

   ElseIf $introMode = "right-out" Then  ; *** Salida por la derecha

      For $i = $cPos[0] To $aClientSize[0] Step 10
         Sleep(10)
         ControlMove($hWnd, "", $idControl, $i, $cPos[1])
      Next
      GUICtrlSetState($idControl, $GUI_HIDE)
      ControlMove($hWnd, "", $idControl, $cPos[0], $cPos[1])

   EndIf

EndFunc   ;==>buttonAnimation

Func sVibrar($hWnd, $idControl) ; simulación de vibrar
   ;--------------- INFO SIZE BUTTON ----------------------------
   Local $cPos = ControlGetPos($hWnd, "", $idControl)
   ;--------------- SHAKE  --------------------------------------
   For $i = 0 To 7
      ControlMove($hWnd, "", $idControl, $cPos[0] - 4, $cPos[1])
      Sleep(20)
      ControlMove($hWnd, "", $idControl, $cPos[0] + 4, $cPos[1])
      Sleep(20)
   Next
   ControlMove($hWnd, "", $idControl, $cPos[0], $cPos[1])
EndFunc   ;==>sVibrar

Func _cerrarInterfaz()

   buttonAnimation($myGui, $Label1, "up-out")

   buttonAnimation($myGui, $Label2, "left-out")
   buttonAnimation($myGui, $Input1, "left-out")
   buttonAnimation($myGui, $Label3, "left-out")
   buttonAnimation($myGui, $Input2, "left-out")
   buttonAnimation($myGui, $Label4, "left-out")
   buttonAnimation($myGui, $Input3, "left-out")

   buttonAnimation($myGui, $List1, "right-out")

   buttonAnimation($myGui, $Button1, "down-out")

   Sleep(200)
   Exit
EndFunc   ;==>_cerrarInterfaz

Func _minimizarInterfaz()
   GUISetState(@SW_MINIMIZE, $myGui)
EndFunc   ;==>_minimizarInterfaz

Func _restoreInterfaz()
   GUISetState(@SW_RESTORE, $myGui)
EndFunc   ;==>_restoreInterfaz
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
yasmany
Hacker del Foro
 
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: FUNCIÓN para "ANIMAR" botones intro/out y "VIBRAR"

Notapor Chefito » 22 Feb 2017, 12:34

Muy chulo. Bonito el efecto. Bien hecho :smt023 .
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
Chefito
Profesional del Autoit
 
Mensajes: 2020
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)


Volver a esScripts - Programas - Abre tus creaciones maravillosas

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 1 invitado

cron