Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   подскажите как масштабировать объект относительно точки (http://www.flasher.ru/forum/showthread.php?t=138234)

random13 02.04.2010 13:52

подскажите как масштабировать объект относительно точки
 
подскажите как масштабировать объект относительно какой либо точки?

Bgg 02.04.2010 13:59

Кладете свой объект в спрайт и меняете внутри него координаты.
Код AS3:

var spr:Sprite = new Sprite();
spr.addChild(obj);
obj.x = obj.y = 100;
spr.scaleX = spr.scaleY = 1.5;


Jewelz 02.04.2010 14:12

или используйте TweenLite

Код AS3:

import com.greensock.*; 
import com.greensock.easing.*;
import flash.geom.Point;
 
TweenLite.to(mc, 1, {transformAroundPoint:{point:new Point(244,299), scaleX:0.5, scaleY:0.5}, ease:Elastic.easeOut});


random13 02.04.2010 14:22

Цитата:

Сообщение от Jewelz (Сообщение 897482)
или используйте TweenLite

Код AS3:

import com.greensock.*; 
import com.greensock.easing.*;
import flash.geom.Point;
 
TweenLite.to(mc, 1, {transformAroundPoint:{point:new Point(244,299), scaleX:0.5, scaleY:0.5}, ease:Elastic.easeOut});


воо, это как раз и нуно, использую именно TweenLite, не видел у него этого свойства.
а какие координаты принимает transformAroundPoint, локальные или глобальные?

Vier 02.04.2010 15:45

А в caurina.Tweener есть такая возможность? В доках не нашел.
Обычно сам считаю, куда нужно подвинуть мувик в процессе масштабирования, неудобно.

Art_133 02.04.2010 15:50

В caurina.Tweener не видел тоже. Наверное нет...

Bgg 02.04.2010 16:45

Очевидно же, что TweenLite, не говоря уже о TweenMax в сто тыщ раз круче Caurin'ы.

Jewelz 02.04.2010 18:00

Цитата:

а какие координаты принимает transformAroundPoint, локальные или глобальные?
глобальные

random13 07.04.2010 12:13

Сюдя по всему transformAroundPoint добавляется через плагин, причем платный

Добавлено через 41 минуту
еще есть какие нить предложения кроме Caurin'ы

Mur4ik 08.04.2010 18:29

Код AS3:

function scaleFromPoint(doInstance:DisplayObject, sx:Number, sy:Number, scalePoint:Point):void
{
        var m:Matrix = doInstance.transform.matrix;
 
        m.tx -= scalePoint.x;
        m.ty -= scalePoint.y;
        m.scale(sx, sy);
        m.tx += scalePoint.x;
        m.ty += scalePoint.y;
 
        doInstance.transform.matrix = m;
}

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


Часовой пояс GMT +4, время: 04:17.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.