Hello,
I am trying to get right how animations should be done in Clutter 1.16, but
not everything is clear right now. So, can you help me solve the puzzle?
BTW, I am using python.
Classes I should care of are: Timeline, value intervals, Animatable,
(Property|Keyframe)?Transition and TransitionGroup. ClutterAnimation should
be left alone as deprecated.
I'll try to schematize what I understand and what not.
* All the classes above are not actors. Animatable is an interface,
Transition is an abstract class.
* A Timeline is just a class that will generate ticks for a certain
duration. This is where easing and various animation modes are set, or in
general where event timings are managed.
* Value intervals are helpers that allows to interpolate between two given
values (with a custom function if necessary).
* Transitions are timelines with a transition in them.
* Property transitions are transitions that refers to a single property of
an actor.
* Keyframe transitions extend property transitions to introduce keyframes,
so you can place different keyframes in [0,1] distributed not necessarily
evenly and the class will interpolate them as needed.
* Transition group is pretty clear.
Things I do not get:
* ClutterAnimation is deprecated, but ClutterAnimatable is not. But in the
manual it say that "ClutterAnimatable is an interface that allows a GObject
class to control how a ClutterAnimation will animate a property".
I miss to understand how I should use Animatable without Animation...
Pheraps is the Transition class that somewhat replaces Animation?
Because, Animatable are used in ClutterTransition and its children, but...
* ...I fail to understand how ClutterTransition is used.
I can't see where on the documentation it says that Transition is an
abstract class, but in Python when instancing it, it gives me:
TypeError: cannot create instance of abstract (non-instantiable) type
`ClutterTransition'
So, I tried subclassing the transition like this:
class PosTrans(clu.Transition):
def __init__(self):
super(PosTrans, self).__init__()
def attached(self, animatable):
print("Attached to object", animatable)
def detached(self, animatable):
print("Detached from object", animatable)
def compute_value(self, animatable, interval, progress):
print("Progress", progress)
and use it like this:
transition = PosTrans()
transition.set_from(0)
transition.set_to(50)
transition.set_duration(2000)
transition.set_animatable(actor) # a simple Actor
transition.start()
But none of the above methods is called (nothing printed).
* As a marginal issue, I do not understand why in ClutterAnimatable there
is a get_initial_state, but not a get_final_state, and vice-versa with the
set method. I can't understand how those methods are used.
* So, I tried using PropertyTransition, like this:
transition = clu.PropertyTransition.new('position')
transition.set_animatable(actor)
transition.set_duration(1000)
transition.set_from(0)
transition.set_to(100)
transition.start()
but, again, nothing is happening.
I do not know where to go from here.
Can someone please help me?
Thanks for your time!
~Ale
_______________________________________________
clutter-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/clutter-list