![]() |
|
||||||||||
|
|||||
|
Присоединюсь к вопросу автора.
alatar, просто с матрицами, да не просто ![]() К примеру я с успехом применяю матрицу для смещений всяких. Вращение тоже работает ок - пматрицей ноль клипа передвинул и ок. А вот со скейлами полдня промучался и ничего не получилось. Скейл при любых раскладах работал из лево-верха клипа, а не из нуля оного. (хотя такое же смещение нуля помогало мне когда надо было крутить клип вокруг этого самого нуля).
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
[+1 28.12.10]
[+1 29.12.10] Регистрация: Aug 2006
Сообщений: 107
|
ну. согласитесь, поиск это не faq. очень часто бывают темы которые то ли не знаешь как искать. то ли поиск выдает кучу тем не относяшихся к делу
|
|
|||||
|
Цитата:
package { import flash.display.DisplayObject; import flash.display.Graphics; import flash.display.Loader; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.MouseEvent; import flash.geom.Matrix; import flash.geom.Point; import flash.net.URLRequest; import flash.system.System; public class asTest extends Sprite { private var _sprite:Sprite = new Sprite(); public function asTest() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; draw(_sprite.graphics); _sprite.x = 100; _sprite.y = 100; addChild(_sprite); _sprite.addEventListener(MouseEvent.CLICK, scaleAroundPoint); } private function draw(gr:Graphics):void { gr.beginFill(Math.random()*0xFFFFFF); gr.drawRect(0, 0, 50, 50); gr.endFill(); } private var scale:Number = 2; private function scaleAroundPoint(event:MouseEvent):void { scale++; var target:DisplayObject = DisplayObject(event.currentTarget); //точка вращения var transformPoint:Point = new Point(25, 25); var unscaledWidth:Number = target.width / target.scaleX; var unscaledHeight:Number = target.height / target.scaleY; var offsetX:Number = transformPoint.x / unscaledWidth; var offsetY:Number = transformPoint.y / unscaledHeight; /* корректируем координаты объекта. Необходимо восстановить координаты объекта относитльно точки вращения без увеличения */ var targetX:Number = target.x + target.width * offsetX - target.width * offsetX / target.scaleX; var targetY:Number = target.y + target.height * offsetY - target.height * offsetY / target.scaleY; var m:Matrix = new Matrix(); m.translate(-transformPoint.x, -transformPoint.y); m.scale(scale, scale); m.translate(transformPoint.x, transformPoint.y); m.translate(targetX, targetY); target.transform.matrix = m; } } } |
|
|||||
|
Спасибо Кэп, я именно так и сделал
![]() Вопрос не про "подогнать по пикселам после скейла", а в том что если делать это в ИДЕ - то смена центра влияет и на центр скейла. Кодом у меня это сделать не получилось, кроме как подогнать так как ты привел в своем примере.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Не получилось - значит при любых раскладах скейлится из лево-верха - вправо-низ.
И кроме как центровать в процессе - ниче не придумалось. Хотя я так полагал что скейл работает из точки нуля мувика (черненький крестик в ИДЕ). И вот знатоки вопрос: - Это я неправильно думаю про скейл и он при любых раскладах таки работает из лево-верха, и пофиг где ноль - или я прав насчет скейла, но все танцы с матрицей на самом деле делают что-то другое, но не сдвигают ноль - или я просто что-то не так делал, и скейл у нас должен быть из точки нуля, и матрица должна свигать именно этот ноль.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Длина стороны прямоугольника зависит от того, где находится начало координат?
__________________
Reality.getBounds(this); |
|
|||||
|
А не все ли равно, сдвинуть ноль относительно объекта (что и звучит то абсурдно), или сдвинуть объект относительно нуля?
В итоге этих действий мы получим(ну это как я себе понимаю) один результат - ноль будет в определенной точке клипа (не лево-верх клипа, но что-то другое).
__________________
Кто к нам с чем для чего - тот у нас того от того. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|