![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+6 30.10.12]
Регистрация: Jul 2005
Сообщений: 35
|
На сцене два мувиклипа, которые поворачиваются при нажатии кнопки с помощью метода rotationX. Но почему-то клипы поваричаваются не синхронно, каждый на свой угол, хотя rotationX инкрементируется на одну и ту же величину. Не подскажите в чем дело?
На сцене два мувиклипа, с instance name bla1 и bla2, а также кнопка, при нажатии на которую выполняется следующая функция: |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Меняйте не rotationX, а просто rotation. rotationX поворачивает объект в трехмерном пространстве, поэтому из-за того, что объекты расположены в разных местах, они и по-разному выглядят.
Представьте, что вы смотрите на стол, на котором стоят две книги, повернутые относительно стола на один и тот же угол, — книги будут зрительно выглядеть отлично друг от друга.
__________________
hauts.ru |
|
|||||
|
[+6 30.10.12]
Регистрация: Jul 2005
Сообщений: 35
|
Цитата:
|
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Ну так наверное и нужно было это уточнить в самом начале.
var pp:PerspectiveProjection = new PerspectiveProjection(); pp.projectionCenter = new Point(stage.stageWidth/2, stage.stageHeight/2); container.transform.perspectiveProjection = pp; Накидал пример, изучайте: import flash.display.Sprite; import flash.geom.PerspectiveProjection; import flash.geom.Point; function createClip():Sprite { var s:Sprite = new Sprite(); s.graphics.lineStyle(1,0x000000); s.graphics.beginFill(0xFFFFFF * Math.random()) s.graphics.drawRect(0,0,100,100); s.graphics.endFill(); return s } var clip_1:Sprite = createClip(); var clip_2:Sprite = createClip(); addChild(clip_1) addChild(clip_2) clip_1.x = 100 clip_1.y = 100 clip_2.x = 350 clip_2.y = 150 var container_1:Sprite = new Sprite(); var container_2:Sprite = new Sprite(); var clip_3:Sprite = createClip(); var clip_4:Sprite = createClip(); container_1.addChild(clip_3) container_2.addChild(clip_4) addChild(container_1) addChild(container_2) container_1.x = 100 container_1.y = 300 container_2.x = 350 container_2.y = 350 var pp:PerspectiveProjection = new PerspectiveProjection() pp.projectionCenter = new Point(50,50) container_1.transform.perspectiveProjection = pp; container_2.transform.perspectiveProjection = pp; stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler) function mouseMoveHandler(e:MouseEvent){ clip_1.rotationX = 180 * stage.mouseX / stage.stageWidth clip_2.rotationX = clip_1.rotationX clip_3.rotationX = clip_4.rotationX = clip_1.rotationX }
__________________
hauts.ru Последний раз редактировалось Hauts; 31.10.2012 в 11:41. |
|
|||||
|
2 gin_sea
Для того чтобы объекты правильно поворачивались вокруг какой-то точки, обычно делают поворот так: 1. Перемещение точки, вокруг которой вращают в 0,0,0 2. Поворот 3. Перемещение обратно в ту точку, где точка вращения находилась до п.1 Тогда все будет поворачиваться верно.
__________________
interplanety |
|
|||||
|
[+6 30.10.12]
Регистрация: Jul 2005
Сообщений: 35
|
Цитата:
Последний раз редактировалось gin_sea; 31.10.2012 в 12:21. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Hauts, от того, что Вы назначите двум объектам один и тот же центр проекции, они не станут выглядеть одинаково О__о. У них итак по-умолчанию один центр проекции.
Я бы для начала выяснил, чего на самом деле хочет автор вопроса. Потому что очевидно, что оба объекта конечно же вращаются "синхронно" "в трехмерном пространстве", куда они денутся. Очевидно, что автор хочет совсем другого. Возможно, чтобы объекты выглядели одинаково, наплевав на перспективу. Тогда им надо назначать индивидуальные PerspectiveProjection. Но может быть автор хочет чего-то вообще третьего (пятого)?
__________________
Reality.getBounds(this); |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Цитата:
Цитата:
![]()
__________________
hauts.ru |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Для клипов в контейнерах можно и так.
А без контейнеров — "надо назначать индивидуальные PerspectiveProjection" clip_1.x = 100; clip_1.y = 100; var ppC1:PerspectiveProjection = new PerspectiveProjection(); ppC1.projectionCenter = new Point(100 + 50, 100 + 50); clip_1.transform.perspectiveProjection = ppC1; clip_2.x = 300; clip_2.y = 250; var ppC2:PerspectiveProjection = new PerspectiveProjection(); ppC2.projectionCenter = new Point(300 + 50, 250 + 50); clip_2.transform.perspectiveProjection = ppC2;
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|