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

Reply via email to