HOW IT WORKS
The Easing library is very easy to use, the only thing you need to keep track in your code is the delta time, this is needed to calculate exactly the transition position and to guarantee a smooth experience. Fortunatly this is quiet easy in Hollywood, you need to setup a timer and to keep track of the time passed between each frame rendering.
The general program structure to use efficienty the Easing library is showed below:
- If you need to, initialize your script
- Setup some tweens using tween.start()
- Start a timer to keep track of the delta time
- Start an interval to update your scene
- Setup a never ending loop with the WaitEvent() function
Here is a very simple working example, we will move a text around the screen using a tween.
; Working with tweens ; 1. Include the Easing library @INCLUDE "Easing.hws" ; 2. Setup a tween for a text string that will cross the screen in 10 seconds ; We need a table to hold the text position Local textPos = { x = 0, y = 320 } ; Let's start the transition tween.start(10000, ; 10 seconds = 10*1000 milliseconds textPos, ; The table where we have our variable we want to smoothly change { x = 600 }, ; One or more targets : in this case we want to reach x=640 in 10 seconds "inoutbounce", ; The name of the easing function we want to use Function() ; A function to call when the transition ends, here we are using an anonymous function to print a message NPrint("Transition Ended! Click Left Mouse Button") WaitLeftMouse() End EndFunction ) ; 3. We need a function we will call regurarly to update and render ; the scene, we also need a variable to store the previous execution ; time so we can calculate the delta time. Local previousTime = 0 Local timer = StartTimer(Nil) Function renderer() ; Calculate the delta time Local currentTime = GetTimer(timer) Local deltaTime = currentTime - previousTime ; Update previousTime variable previousTime = currentTime ; Clear the screen Cls() ; Update the tweens tween.update(deltaTime) ; Render the object TextOut(textPos.x, textPos.y, "HELLO!") EndFunction ; 4. Setup a Interval function to update & render the tweens @ 100FPS ; meaning every 10 milliseconds. Local rendererInterval = SetInterval(Nil, renderer, 10) ; 5. Setup an infinite loop and watch the result Repeat WaitEvent() Forever
The source code is available here.