AS3 с использованием матрицы для масштабирования объекта от его центра

Вот кое-что, что я пытаюсь выяснить относительно экранных объектов в ActionScript3 / Flex. Допустим, у вас есть экранный объект, точка регистрации которого находится в верхнем левом углу, и вы хотите масштабировать его от его центра (середины экранного объекта). Как вы могли бы легко добиться этого с помощью класса flash.geom.Matrix

Спасибо за вашу помощь


person just_a_dude    schedule 25.11.2009    source источник


Ответы (1)


Это делается путем перевода объекта в желаемый центр масштабирования / вращения, масштабирования / поворота и последующего перевода обратно.

Вы можете сделать это с одной матрицей, объединив матрицы, чтобы получить одну матрицу:

var m:Matrix = new Matrix();
m.translate(-centerX, -centerY);
m.scale(scaleX, scaleY);
m.translate(centerX, centerY);
person Aaron    schedule 25.11.2009
comment
translate () и scale () не являются статическими методами. Вам нужно вызвать их из экземпляра Matrix. - person picardo; 05.01.2010
comment
И, кстати, возвращаемое значение обоих этих методов недействительно. - person picardo; 05.01.2010