![]() |
|
||||||||||
|
|||||
|
[+6 22.06.12]
Регистрация: Jun 2012
Сообщений: 70
|
Здравствуйте дорогие форумчанины!
У меня собственно вопрос:имею два объекта(обычная графика и UILoader), изначально допустим объект графики имеет координаты x-100 и y-100, а объект UILoader находится поверх него и имеет координаты x-150 и y-150. Я увеличиваю эти два объекта в n-раз(допустим в 4 раза), изменяя width и height, как мне сохранить пропорции объектов при увеличение(т.е. их координаты). Попробую объяснить, т.е. после увеличения объект UILoader должен лежать также зрительно как и был до увеличения. У меня получается, что если объект UILoader поместить в левый край объекта графики, то он отображается нормально, если вправо, то сдвигается влево и такие же проблемы везде. Как исправить, как можно сохранять пропорции в координатах при увеличение? |
|
|||||
|
Точка привязки спрайта - левый верхний угол. Масштаб соответственно делается относительно него. Масштаб относительно другой точки привязки обычно делается через матрицы трансформации путем перемещения объекта нужной точкой в 0,0, масштабирования, и перемещения объекта нужной точкой обратно.
__________________
interplanety |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 148
|
Попробуйте GreenShok plugins, там много интересного по этой теме.
|
|
|||||
|
[+6 22.06.12]
Регистрация: Jun 2012
Сообщений: 70
|
Wolsh, все по отдельности. А можно как-то все добавить в контейнер?
|
|
|||||
|
Регистрация: Dec 2009
Сообщений: 125
|
Выровняйте содержимое каждого объекта относительно центра. Точка привязки центр.
После уже должны как вы хотите объекты увеличиваться. Но если объектов несколько, а операция одна, то конечно проще: |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Вот второй код, с контейнером, верно. Ну можно и без контейнера расстояние умножить на скейл.
__________________
Reality.getBounds(this); |
|
|||||
|
[+6 22.06.12]
Регистрация: Jun 2012
Сообщений: 70
|
Не работает, он увеличивает область у container, но все, что у него добавлено так и остается как было
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Область у контейнера, да?
Всё чудесатее и чудесатее....Добавлено через 4 минуты package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; public class Main extends Sprite { private var _container:Sprite; private var _isScaled:Boolean = false; public function Main():void { _container = new Sprite(); this.addChild(_container); var child1:Sprite = new Sprite(); child1.graphics.beginFill(0x000000); child1.graphics.drawRect(0, 0, 100, 100); _container.addChild(child1); var child2:Sprite = new Sprite(); child2.graphics.beginFill(0x004400); child2.graphics.drawRect(0, 0, 100, 100); _container.addChild(child2); child2.x = child2.y = 40; _container.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(event:MouseEvent):void { _container.scaleX = _container.scaleY = _isScaled ? 1 : 4; _isScaled = ! _isScaled; } } }
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|