Actionscript Перевод преобразования - PullRequest
2 голосов
/ 19 июня 2009

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

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

1 Ответ

2 голосов
/ 19 июня 2009

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

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 точно такая же, как и с rotate - вы можете применять ваши повороты в любом случае, но с помощью встроенных свойств MC они вступают в силу относительно клипа. точка регистрации, и функции Matrix относительно начала координат. Если точка регистрации клипа находится в точке (0,0), они работают одинаково.

...