Jump to content

[Ayuda] Ayuda con animacion


AlFA#

Recommended Posts

Buenas, tengo un problema y la verdad, que no se como hacerlo y es que necesito que una animación creada con interpolateBetween y es que solo la carga 1 vez, las demás es como si no leeyera el código.

Aquí dejo una prueba de lo que me pasa: https://gyazo.com/1878844b68bdac9da7ed767bd0d9312f

Añado: Solo digo la anim, que no se repite, lo demás lo tengo que terminar.

            if anim == false then 
                    anim = true; 
                    start = getTickCount() 
            end 
                local now = getTickCount() 
                local endTime = start + 2000 
                local elapsedTime = now - start 
                local duration = endTime - start 
                local progress = elapsedTime / duration 
                local x = interpolateBetween(0, 0, 0, 332, 0, 0, progress, "OutQuad") 
            dxDrawRectangle( x - 5, window.snapTop and 0 or ( y - 5 ), width + 10, window.snapTop and window.snapBottom and screenY or not window.snapTop and window.snapBottom and ( screenY - x + 5 ) or ( height + 10 ), tocolor( 255, 255, 255, 255 ), backgroundPostGui, false ) 
  

Link to comment

Mi intención era molestar, pero supongo que no funcionó. La librería de easing de EmmanuelOga puede suplir esa función con mayor eficiencia:

https://github.com/EmmanuelOga/easing/b ... easing.lua

El resto supongo que será una falla en el cálculo, ¿podrías ampliar el trozo de código para ver el resto de variables?

Igual lo mejor sería replantearse el código usando la librería y no esa función.

Link to comment

Supongo que el problema está acá:

  
            if anim == false then 
                    anim = true; 
                    start = getTickCount() 
            end 
  

Nunca vuelves a setear el anim a false, por eso el tick nunca es almacenado en la variable, por lo tanto, la animación estará estática.

Link to comment
Supongo que el problema está acá:
  
            if anim == false then 
                    anim = true; 
                    start = getTickCount() 
            end 
  

Nunca vuelves a setear el anim a false, por eso el tick nunca es almacenado en la variable, por lo tanto, la animación estará estática.

¿Y como puedo hacer eso, me explicas un poco mejor?

Muchas gracias Tomas por responder.

Link to comment
En la función que abre el panel pones anim = false

Lo siento por las molestias, pero es que no me va :S

Hice esto:

            if anim == false then 
                    anim = false; 
                    start = getTickCount() 
            end 

Link to comment

Exacto. Lo que hace esa variable es comprobar si el panel está abierto o no. Si no está abierto (false), ejecutará la animación y si está abierto (true) no la ejecutará porque, está abierto.

Es sencillo de explicar pero aplicarlo al gui_c.lua es algo complicado pero creo que me entiendes xD.

Link to comment
Exacto. Lo que hace esa variable es comprobar si el panel está abierto o no. Si no está abierto (false), ejecutará la animación y si está abierto (true) no la ejecutará porque, está abierto.

Es sencillo de explicar pero aplicarlo al gui_c.lua es algo complicado pero creo que me entiendes xD.

Si si, pero es posible lo que pasa es que he estado editando el código mal, lo he puesto en un render y por lo visto solo se ejecuta una vez el render y ya, me han dicho que lo haga en los paneles de paradise para si se abre cualquier panel se ejecute esa linea xD

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...