2009-06-18 4 views
2

Привет Я работаю над ActionScript 3, который должен использовать масштабирование вращения перевода для мувиклипа. У меня есть поворот и масштабирование, работающие должным образом, но когда я занимаюсь переводом, я обнаружил, что перевод будет перемещать объект за пределы начала координат, поэтому, когда я хотел повернуть объект, объект больше не вращается, как ожидалось. Каков наилучший способ реализации перевода, чтобы он переводил мувиклип во время перевода начала ...Трансформация преобразования векторов

Последняя вещь .. В чем разница между функцией movieclip.scale и movieclip.transform.scale? Если я использую movieclip.scale, могу ли я получить movieclip.transform.matrix из этого movieclip.scale

ответ

2

Все преобразования матрицы, включая поворот и масштаб, вступают в силу относительно начала координат системы, где клип живет. Если вы хотите повернуть или масштабировать вокруг любой точки, вы должны перевести клип в эту точку, преобразовать и перевести назад. Другими словами, это:

clip.rotation = 30; 

делает то же самое, как это:

var tx:Number = clip.x; 
var ty:Number = clip.y; 
var m:Matrix = clip.transform.matrix; 
m.translate(-tx, -ty); 
m.rotate(30*Math.PI/180); 
m.translate(tx, ty); 
clip.transform.matrix = m; 

Это работает точно так же, как с масштабным преобразованием.

Для вашего другого вопроса разница между MovieClip.scaleX/Y и Matrix.scale в точности совпадает с поворотом - вы можете применять свои вращения в любом случае, но со встроенными свойствами MC они действуют по отношению к точка регистрации клипа, а функции Matrix относятся к началу координат. Если точка регистрации клипа находится в (0,0), то они работают одинаково.