Cursor animation


The example uses one game object with a sprite component and a label (to show the duration). The game object contains the script that sets and animates the normalized cursor value making the sprite’s animation progress and shows the duration value on the label:




function init(self)".", "acquire_input_focus") -- <1>
    -- Get the current value on component "sprite"
    self.duration = 0 -- <2>

function on_input(self, action_id, action)
    if action_id == hash("touch") and action.pressed then -- <3>
        self.duration = self.duration + 1 -- <4>
        if self.duration > 3 then  -- <5>
            self.duration = 0
        label.set_text("#info", "Cursor animation duration: "..self.duration)  -- <6>
        go.cancel_animations("#sprite", "cursor")  -- <7>
        go.set("#sprite", "cursor", 0.0)  -- <8>
        go.animate("#sprite", "cursor", go.PLAYBACK_LOOP_FORWARD, 1, go.EASING_LINEAR, self.duration) -- <9>

1. Tell the engine that this object ("." is shorthand for the current game object) should listen to input. Any input will be received in the `on_input()` function.
2. Store a duration time used in this example (for defining how long the cursor animation should take) in self reference.
3. If we receive input (touch or mouse click) we change the duration of the cursor animation.
4. Increase the duration.
5. If the duration is larger than 3, set it back to 0 to make a circular change of the duration.
6. Set the text of the label with id `info` to show the current duration of the animation to user.
7. Cancel previous animation on cursor value.
8. Reset cursor value to 0.
9. Start new animation of cursor value with playback set to be looped and in foward direction (increasing cursor value), linear easing and new duration.

If you want to play with these examples, you can get the project on Github.

Do you want to see more examples? Why not write a few yourself and submit a pull request? We love contributions.