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

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

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

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

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

Другие вопросы по тегам