как анимировать / вращать актера вокруг его центральной точки?

Я использую Clutter и Vala для анимации разных вещей. Но когда я, например, вращаю актера вокруг оси Z, он не просто вращается вокруг себя. Вместо этого он вращается вокруг левого верхнего угла, как будто это центральная точка. Я думаю, что это как-то связано с bindcontraint, но я не смог найти об этом много информации.

Итак, мой вопрос: как я могу заставить актера вращаться вокруг своей центральной точки?

любые примеры приветствуются :) заранее спасибо


person user69969    schedule 12.11.2013    source источник


Ответы (1)


вы хотите использовать свойство Clutter.Actor.pivot_point, которое описывает опорную точку для всех преобразований (поворот, масштабирование, перемещение).

Важно отметить, что свойство pivot_point выражается в нормализованном пространстве координат относительно размера самого актера. так:

actor.pivot_point = Clutter.Point() { x = 0.0, y = 0.0 };

это верхний левый угол актера;

actor.pivot_point = Clutter.Point() { x = 1.0, y = 1.0 };

это нижний правый угол актера; а также

actor.pivot_point = Clutter.Point() { x = 0.5, y = 0.5 };

является центром актера - независимо от значений в свойствах Clutter.Actor.width и Clutter.Actor.height актера.

дополнительная информация доступна в справочнике по API: https://developer.gnome.org/clutter/stable/ClutterActor.html#ClutterActor--pivot-point

person ebassi    schedule 12.11.2013
comment
это было именно то, о чем я просил. Пришлось изменить код, но он в основном тот же: public Clutter.Point center () { Clutter.Point a; a = Clutter.Point.alloc(); a.init(0.5f, 0.5f); return a; } - person user69969; 13.11.2013