Clutter::Animation(3pm)

NAME

Clutter::Animation - Animate object properties

SYNOPSIS

my $animation = Clutter::Animation->new();

# 500 milliseconds of duration
$animation->set_duration(500);

# cubic easing mode
$animation->set_mode('ease-out-cubic');

# set the object we want to animate
$animation->set_object($texture);

# bind the properties we want to animate on the object; bind()
# calls can be chained up to
$animation->bind('scale-x', 2.0)
          ->bind('scale-y', 2.0)
          ->bind('opacity', 255);

# start the animation
$animation->get_timeline()->start();

# set the object as reactive when the animation ends
$animation->signal_connect(completed => sub {
    $animation->get_object()->set_reactive(TRUE);
})

DESCRIPTION

Clutter::Animation is an class providing simple, implicit animations for Glib::Object instances.

Clutter::Animation instances will bind one or more object properties
belonging to a Glib::Object to a Clutter::Interval, and will then use a Clutter::Alpha to interpolate the property between the initial and
final values of the interval.

The duration of the animation is set using
Clutter::Animation::set_duration(). The easing mode of the animation is set using Clutter::Animation::set_mode().
Controlling the Animation
If you want to control the animation you should retrieve the
Clutter::Timeline using Clutter::Animation::get_timeline() and then use Clutter::Timeline methods like Clutter::Timeline::start(), Clutter::Timeline::pause() or Clutter::Timeline::stop().
A Clutter::Animation will emit the Clutter::Animation::completed signal when the Clutter::Timeline used by the animation is completed; unlike
Clutter::Timeline, though, the Clutter::Animation::completed will not
be emitted if Clutter::Animation:loop is set to %TRUE - that is, a
looping animation never completes.
If your animation depends on user control you can force its completion using Clutter::Animation::completed().
If the Glib::Object instance bound to a Clutter::Animation implements
the Clutter::Animatable interface it is possible for that instance to
control the way the initial and final states are interpolated.
Changing the Animation
The initial and final value of a property bound to the Animation are
controlled by a Clutter::Interval instance. You can retrieve the
Interval instance and change the values, or you can change the Interval instance itself:

# increase the scaling factor
$animation->get_interval('scale-x')->set_final_value(2.5);
$animation->get_interval('scale-y')->set_final_value(2.5);
# change the opacity interval
$cur_value = $animation->get_object()->get_opacity();
$interval = Clutter::Interval->new('Glib::Uchar');
$interval->set_interval($cur_value, 128);
$animation->update_interval('opacity', $interval);
Differences between Animation and Behaviour
Clutter::Animation is distinguished from Clutter::Behaviour because the former can only control Glib::Object properties of a single
Glib::Object instance, while the latter can control multiple properties using accessor functions inside the Clutter::Behaviour::ALPHA_NOTIFY
virtual function, and can control multiple Clutter::Actors at the same time.
Convenience API
For convenience, it is possible to use the Clutter::Actor::animate() method which will take care of setting up and tearing down a
Clutter::Animation instance and animate an actor between its current
state and the specified final state:

$texture->animate(
'ease-out-cubic', 500,
scale_x => 2.0,
scale_y => 2.0,
opacity => 255
)->signal_connect(completed => sub { $texture->set_reactive(TRUE) })
The example above reproduces the same animation as the one in the
Synopsis.
The Clutter::Animation instance created by Clutter::Actor::animate() is managed by the animate() method itself and it is guaranteed to be valid for as long as the animation is running; once the animation emits the
completed signal, the animation will still be valid from within handlers connected to that signal, until the default signal handler is executed.

HIERARCHY

Glib::Object
+----Clutter::Animation

METHODS

animation = Clutter::Animation->new
Creates a new Clutter::Animation
alpha = $animation->get_alpha $animation->set_alpha ($alpha)
o $alpha (Clutter::Alpha)
animation = $animation->bind ($property_name, $final)
o $property_name (string)
o $final (scalar)
Binds property_name to the animation.
An implicit Clutter::Interval will be created which will use:
the type of the property
the current value as the initial value
the passed final value as the final value
This method will croak if animation does not have an object set.
animation = $animation->bind_interval ($property_name, $interval)
o $property_name (string)
o $interval (Clutter::Interval)
$animation->completed
Emits the completed signal on animation
integer = $animation->get_duration
Gets the duration set using Clutter::Animation::set_duration()
$animation->set_duration ($msecs)
o $msecs (integer)
Sets the duration of animation, in milliseconds
boolean = $animation->has_property ($property_name)
o $property_name (string)
interval = $animation->get_interval ($property_name)
o $property_name (string)
boolean = $animation->get_loop
Retrieves whether animation is looping or not
$animation->set_loop ($loop)
o $loop (boolean)
Sets whether animation should loop. A looping animation will never emit the completed signal
scalar = $animation->get_mode
Retrieves the easing mode as set using Clutter::Animation::set_mode()
$animation->set_mode ($mode)
o $mode (scalar)
Sets the easing mode of animation. The easing mode can either be a value of the Clutter::AnimationMode enumeration or the logical id
returned by Clutter::Alpha::register_func() for custom easing modes
object = $animation->get_object
Retrieves the object set using Clutter::Animation::set_object()
$animation->set_object ($object)
o $object (Glib::Object)
Sets the object to be animated. The object must be set before calling Clutter::Animation::bind() or Clutter::Animation::bind_interval()
timeline = $animation->get_timeline $animation->set_timeline ($timeline)
o $timeline (Clutter::Timeline)
$animation->unbind_property ($property_name)
o $property_name (string)
$animation->update_interval ($property_name, $interval)
o $property_name (string)
o $interval (Clutter::Interval)

PROPERTIES

'alpha' (Clutter::Alpha : readable / writable / private)
The alpha used by the animation
'duration' (Glib::UInt : readable / writable / private)
Duration of the animation, in milliseconds
'loop' (boolean : readable / writable / private)
Whether the animation should loop
'mode' (Glib::ULong : readable / writable / private)
The mode of the animation
'object' (Glib::Object : readable / writable / private)
Object to which the animation applies
'timeline' (Clutter::Timeline : readable / writable / private)
The timeline used by the animation

SIGNALS

completed (Clutter::Animation)
started (Clutter::Animation)

ENUMS AND FLAGS

enum Clutter::AnimationMode
o 'custom-mode' / 'CLUTTER_CUSTOM_MODE'
o 'linear' / 'CLUTTER_LINEAR'
o 'ease-in-quad' / 'CLUTTER_EASE_IN_QUAD'
o 'ease-out-quad' / 'CLUTTER_EASE_OUT_QUAD'
o 'ease-in-out-quad' / 'CLUTTER_EASE_IN_OUT_QUAD'
o 'ease-in-cubic' / 'CLUTTER_EASE_IN_CUBIC'
o 'ease-out-cubic' / 'CLUTTER_EASE_OUT_CUBIC'
o 'ease-in-out-cubic' / 'CLUTTER_EASE_IN_OUT_CUBIC'
o 'ease-in-quart' / 'CLUTTER_EASE_IN_QUART'
o 'ease-out-quart' / 'CLUTTER_EASE_OUT_QUART'
o 'ease-in-out-quart' / 'CLUTTER_EASE_IN_OUT_QUART'
o 'ease-in-quint' / 'CLUTTER_EASE_IN_QUINT'
o 'ease-out-quint' / 'CLUTTER_EASE_OUT_QUINT'
o 'ease-in-out-quint' / 'CLUTTER_EASE_IN_OUT_QUINT'
o 'ease-in-sine' / 'CLUTTER_EASE_IN_SINE'
o 'ease-out-sine' / 'CLUTTER_EASE_OUT_SINE'
o 'ease-in-out-sine' / 'CLUTTER_EASE_IN_OUT_SINE'
o 'ease-in-expo' / 'CLUTTER_EASE_IN_EXPO'
o 'ease-out-expo' / 'CLUTTER_EASE_OUT_EXPO'
o 'ease-in-out-expo' / 'CLUTTER_EASE_IN_OUT_EXPO'
o 'ease-in-circ' / 'CLUTTER_EASE_IN_CIRC'
o 'ease-out-circ' / 'CLUTTER_EASE_OUT_CIRC'
o 'ease-in-out-circ' / 'CLUTTER_EASE_IN_OUT_CIRC'
o 'ease-in-elastic' / 'CLUTTER_EASE_IN_ELASTIC'
o 'ease-out-elastic' / 'CLUTTER_EASE_OUT_ELASTIC'
o 'ease-in-out-elastic' / 'CLUTTER_EASE_IN_OUT_ELASTIC'
o 'ease-in-back' / 'CLUTTER_EASE_IN_BACK'
o 'ease-out-back' / 'CLUTTER_EASE_OUT_BACK'
o 'ease-in-out-back' / 'CLUTTER_EASE_IN_OUT_BACK'
o 'ease-in-bounce' / 'CLUTTER_EASE_IN_BOUNCE'
o 'ease-out-bounce' / 'CLUTTER_EASE_OUT_BOUNCE'
o 'ease-in-out-bounce' / 'CLUTTER_EASE_IN_OUT_BOUNCE'
o 'animation-last' / 'CLUTTER_ANIMATION_LAST'

SEE ALSO

Clutter::Timeline, Clutter::Alpha, Clutter::Behaviour,
Clutter::Interval, Clutter::Actor.

COPYRIGHT

Copyright (C) 2006, 2007, 2008 OpenedHand Ltd

Copyright (C) 2009 Intel Corporation

This module is free software; you can redistribute it and/or modify it under the terms of either:

o the GNU Lesser General Public Library version 2.1; or

o the Artistic License, version 2.0.

See Clutter for the full copyright notice.
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout