![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Есть клип, графика внутри которого расположена в точке 0,0.
Когда я вращаю, то клип вращается не вокруг своего центра. Как с помощью матрицы преобразования (или др. способом), сделать так, чтобы клип оставался на своем месте, но центр координат сместился на середину клипа по XY и клип вращался бы вокруг своего центра? Т.е. визуально клип, как показывался, так и показывается на экране без изменений, но теперь вращался бы вокруг своего центра. Вариант клип в клипе не подходит, также мне нельзя внутри клипа сдвинуть графику, чтобы она находилась посередке точки 0,0. |
|
|||||
|
Для спрайта размером 50х50 и находящегося в координатах 100, 100
Последний раз редактировалось alatar; 08.02.2011 в 17:38. |
|
|||||
|
вот еще "тяжелый" вариант )
var mc1:Sprite = this.getChildByName("mc") as Sprite; // это ваш мувик var angleGrad:Number = mc1.rotation;// начальная позиция поворота в градусах var center:Point = new Point(mc.x + mc1.width / 2,mc1.y + mc1.height / 2); // точка вокруг которой будем крутить var radius:Number = Math.sqrt((mc1.width / 2) * (mc1.width / 2) + (mc1.height / 2) * (mc1.height / 2));// растояние от точки вокруг которой будем крутить до точки регистрации мувика var startRadAngle:Number = Math.acos(mc1.width / 2 / radius);// начальный угол между центром и точкой регистрации function rotate(angle:Number):void{ mc1.rotation = angle;//повернули мувик var angleRad:Number = angle * Math.PI / 180;// вычислили угол в радианах mc1.x = center.x - radius * Math.cos(startRadAngle + angleRad);// сместили мувик на нужную величину по Х mc1.y = center.y - radius * Math.sin(startRadAngle + angleRad);// сместили мувик на нужную величину по У } function _onEnterFrame(e:Event):void{ rotate(angleGrad++); } addEventListener(Event.ENTER_FRAME,_onEnterFrame); // вообще для класса сделать по хорошему отдельный сеттер/геттер а ля rotationAroundOwnCenter. // вообще, по хорошему лучше вообще так не делать, потому как вычислений многовато тяжелых
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
alatar
Применил ваши преобразования, к сожалению объект странно перевернулся...подскажите что не так, ниже привел код: Член-функция класса к которому применяем центровку матрицей: visualOb - наш клип, у которого центруем точку смещения. |
|
|||||
|
Сдвинули не туда после поворота
|
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
alatar
Спасибо, ранее не работал с матрицей, сейчас посмотрел ее описание функций, стал ясен вышеприведенный код. Но у меня стоит задача отцентровать центр смещения + применить к объекту твин вращения, чтобы объект твинился вращаясь вокруг своего центра, как это лучше реализовать? Сам твин обычный флешовый класс Tween. Последний раз редактировалось Alexmody; 08.02.2011 в 18:57. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
//В твине указать сеттер
жаль что придется менять флешовый класс твинера, я глянул, там явной переменной angle нет... |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|