|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Feb 2012
Сообщений: 212
|
Wolsh
Люфт? Что он из себя представляет? Вертел объект на 1 градус в цикле 360 000 раз и никакого изменения координат не было. Правда я храню координаты в отдельном Point и уже после всех манипуляций присваиваю его координаты объекту. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Надо было мне всетаки тест выложить, а не просто класс и SWF)) Скажем, если в этом тесте (SWF который я выложил) убрать из класса раунды, то через 2-5 секунд белая точка уползет из-под черной примерно на 5-10 пикселей. Этот вопрос вообще такой неоднозначный оттого, что каждый тестит по-своему под свою задачу. Задачи действительно очень разные по смыслу. Кому-то надо один раз программно повернуть объект в момент отображения и так оставить. Кому-то надо постоянно крутить объект вокруг одной и той же точки, например стрелку часов. Кто-то представляет интерфейс как "rotation" а не "rotate", то есть считает удобным задать конечный угол "от нуля", а не "доворачивать" объект от его текущего состояния. Сажем, для инструмента в графическом редакторе, позволяющем поворачивать редактируемый объект относительно любой "центральной" точки (transformation point) необходим именно такой "доворот", поскольку он позволяет делать последовательное изменение положения и поворота относительно разных точек (см. SWF). Это наиболее общий по решаемой задаче код. Для конкретных ограниченных ситуаций он может быть сокращен и в три раза.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Feb 2012
Сообщений: 212
|
После долгих раздумий решил вертеть так:
public function objRotate(angle:Number) : void{ var matrix:Matrix = bsMatrix.clone(); matrix.translate( -objLocRotatingPoint.x, -objLocRotatingPoint.y );// смещаем начальную матрицу на локальные коордиаты matrix.rotate( (this.rotation+angle) * GL.RAD );// новое вращение = старое + доворот * Math.PI/180 matrix.translate( objGlobRotatingPoint.x, objGlobRotatingPoint.y );//смещаем начальную матрицу на глобальные коордиаты this.transform.matrix = matrix; } |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Целый день сегодня я пытался объяснить человеку, что мною позаимствованный в этой теме, код, работает без слётов, как часы. Но решив ускорить вращательный момент, чтобы приблизится к тому времени, по истечению которого, у человека, которому я пытался помочь, слетала картинка... И раз, она и вправду слетела. И теперь у меня точно такой же вопрос - правда чтоль не реально сделать вращение без слётов??)
Код использовал Wolsh'a. |
Часовой пояс GMT +4, время: 02:28. |
|
« Предыдущая тема | Следующая тема » |
Теги |
rotation |
|
|