Масштабирование от центра во вспышке - PullRequest
4 голосов
/ 20 декабря 2011

Я использую вспышку (AS3) и у меня есть динамический видеоклип, который я хочу увеличить или уменьшить с помощью ползунка. У меня это работает очень хорошо, используя функции scaleX и scaleY.

Единственная проблема в том, что они масштабируются с левой стороны документа, и я хотел бы, чтобы они масштабировались от центра

Любая помощь приветствуется.

Ответы [ 3 ]

3 голосов
/ 20 декабря 2011
function scaleFromCenter(dis:*, sX:Number, sY:Number):void
{
    var prevW:Number = dis.width;
    var prevH:Number = dis.height;
    dis.scaleX = sX;
    dis.scaleY = sY;
    dis.x += (prevW - dis.width) / 2;
    dis.y += (prevH - dis.height) / 2;
}

scaleFromCenter(yourMovieClip, 0.3, 0.3);

..

Или взгляните на Greensocks TweenMax / AutoFitArea

http://www.greensock.com/autofitarea/

Очень мощный и простой в использовании.

2 голосов
/ 20 декабря 2011

Чтобы масштабировать / повернуть от центра объекта, вам нужно сделать следующее:

  1. Перевести объект в 0,0.
  2. Масштаб / Поворот
  3. Переведите его обратно в исходное значение x, y.

Вот фрагмент кода, который делает это.

private function scaleInPosition(dis:Sprite,sX:Number,sY:Number):void
{
    var posX:Number = dis.x;
    var posY:Number = dis.y;
    dis.x =dis.y = 0;
    dis.scaleX = sX;
    dis.scaleY = sY;
    dis.x = posX;
    dis.y = posY;
}
1 голос
/ 20 декабря 2011

Просто создайте масштабируемый объект с его перекрестием регистрации 0,0 в центре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...