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.