Hugos Posted September 5, 2019 Share Posted September 5, 2019 Hey. I need your help! I have this rectangle: addEventHandler("onClientRender", root, windows) ------------------------------------------------- function windows() dxDrawRectangle(0, y-y/7.5, y/1.6, y/15, tocolor(0, 0, 0), true) end How do I animate it with "interpolateBetween" so that it "leaves" (strEasingType - "Line") from the left corner? Tell me how to WRITE correctly "interpolateBetween"! PLEASE) Link to comment
Ceeser Posted September 5, 2019 Share Posted September 5, 2019 (edited) local iStartTick = 0 -- Needs to get set using getTickCount() when you want to start your animation local iAnimDuration = 2000 -- The animation takes 2s to perform local x1 = 100 -- Left START position of your rectangle local y1 = 100 -- Top START position of your rectangle local x2 = 500 -- Left END position local y2 = 500 -- Top END position function render() local iProgress = (getTickCount() - iStartTick) / iAnimDuration -- Get the difference between now and startTick and divide by wanted duration to get the progress of your animation local x, y = interpolateBetween(x1, y1, 0, x2, y2, 0, iProgress, "Linear") dxDrawRectangle(x, y, 100, 100, tocolor(255, 255, 255, 255)) if (iProgress >= 1) then -- If the animation is done stop the animation + rendering iStartTick = 0; removeEventHandler("onClientRender", root, render) end end function startAnimation() -- Call this function when you want to start your animation iStartTick = getTickCount() addEventHandler("onClientRender", root, render) end This will start rendering and animation always when you call startAnimation() Hope with this you can do everything you want. Edited September 5, 2019 by Ceeser 1 Link to comment
Hugos Posted September 6, 2019 Author Share Posted September 6, 2019 On 05/09/2019 at 17:39, Ceeser said: local iStartTick = 0 -- Needs to get set using getTickCount() when you want to start your animation local iAnimDuration = 2000 -- The animation takes 2s to perform local x1 = 100 -- Left START position of your rectangle local y1 = 100 -- Top START position of your rectangle local x2 = 500 -- Left END position local y2 = 500 -- Top END position function render() local iProgress = (getTickCount() - iStartTick) / iAnimDuration -- Get the difference between now and startTick and divide by wanted duration to get the progress of your animation local x, y = interpolateBetween(x1, y1, 0, x2, y2, 0, iProgress, "Linear") dxDrawRectangle(x, y, 100, 100, tocolor(255, 255, 255, 255)) if (iProgress >= 1) then -- If the animation is done stop the animation + rendering iStartTick = 0; removeEventHandler("onClientRender", root, render) end end function startAnimation() -- Call this function when you want to start your animation iStartTick = getTickCount() addEventHandler("onClientRender", root, render) end This will start rendering and animation always when you call startAnimation() Hope with this you can do everything you want. Thanks! Link to comment
Hugos Posted September 7, 2019 Author Share Posted September 7, 2019 On 05/09/2019 at 09:04, Hugos said: Hey. I need your help! I have this rectangle: addEventHandler("onClientRender", root, windows) ------------------------------------------------- function windows() dxDrawRectangle(0, y-y/7.5, y/1.6, y/15, tocolor(0, 0, 0), true) end How do I animate it with "interpolateBetween" so that it "leaves" (strEasingType - "Line") from the left corner? Tell me how to WRITE correctly "interpolateBetween"! PLEASE) And how can you return the rectangle to the starting position (you need to make a reverse animation)? Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now