|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
ветеран форума
|
программное изменение точки регистрации
Собственно сам вопрос в теме:
Как программно изменить точку регистрации спрайта, мувиклипа и т.д, не добавляя его в другой и соответственно смещая внутри него. Может как то матрицами или еще как нибудь? Вообще удивительно что нет родных методов для этого, в IDE ведь можно это делать при создании, а при создании программно всегда в TL.
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
strange mood
|
Нет никакой точки регистрации, есть только центр координат. Хотите сместить центр координат относительно содержимого спрайта - сместите содержимое относительно центра координат.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
ветеран форума
|
Если только смещением - значит будем смещением
Спасибо... Но, допустим есть у меня спрайт с кучей вложений, как мне его повернуть или отмасштабировать относительно центра спрайта или какой либо произвольной точки? Неужели смещать предварительно все элементы внутри него относительно нужной точки?
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 15.04.2009 в 02:43. |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Цитата:
|
|
|||||
Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
|
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Поместить содержимое внутри в контейнер, его двигать и вертеть родителя.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
ветеран форума
|
Psycho Tiger, это не есть выход, помещать основной объект внутрь другого контейнера или перебирать всех детей и смещать их. Накладно очень будет в некоторых случаях....
Вообщем поковырявшись пришел к такому решению, может кому пригодится. // Масштаб относительно произвольной точки $point public static function relativeScale($dob:DisplayObjectContainer, $scaleX:Number, $scaleY:Number, $point:Point):void { var mtrx:Matrix=$dob.transform.matrix; mtrx.tx -= $point.x; mtrx.ty -= $point.y; mtrx.scale($scaleX, $scaleY); mtrx.tx += $point.x; mtrx.ty += $point.y; $dob.transform.matrix = mtrx; } // Поворот относительно произвольной точки $point public static function relativeRotate($dob:DisplayObjectContainer, $angle:Number, $point:Point):void { var mtrx:Matrix=$dob.transform.matrix; mtrx.tx -= $point.x; mtrx.ty -= $point.y; mtrx.rotate($angle * (Math.PI / 180)); mtrx.tx += $point.x; mtrx.ty += $point.y; $dob.transform.matrix=mtrx; }
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 15.04.2009 в 16:22. |
|
|||||
стервочка (я мужик)
|
Mur4ik, мне говорили, что если перед всеми аргументами писать два значка $, то флэш начинает быстрее работать, а если три, то он вообще начинает летать
|
Часовой пояс GMT +4, время: 12:19. |
|
« Предыдущая тема | Следующая тема » |
|
|