Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как вращать обект болие чем на 180 градусов (http://www.flasher.ru/forum/showthread.php?t=170864)

Albul 03.11.2011 18:04

Как вращать обект болие чем на 180 градусов
 
Я разрабатываю тренажер для метрополитена, и столкнула из проблемой. В общем задача состоит в следующем:
Есть индикатор из стрелкой вот его вид:

http://tbser.com.ua/images/Indicator.jpg

Он отображает уровень напряжения на контактном рельсе, когда поезд едет напряжение меняется и эта стрелка должна плавно отображать значение напряжения.
У меня есть код:
Код AS3:

                       //Следим за сменой напряжения
                        Global.addEventListener(Global.VALUE_LINE_VOLTAGE_CHANGED, onValueLineVoltageChanged);
 
                private function onValueLineVoltageChanged(e:Event = null):void {
 
                        //Рассчитываем куда нужно поставить стрелку при текущем значении напряжения
                        pointerPosition = 164 * Global.valueLineVoltage / Global.AVERAGE_LINE_VOLTAGE;
 
                        //Плавно меняем положение стрелки
                        TweenLite.to(indicatorPointer, 1, {rotation: pointerPosition});

Если стрелка отклоняется меньше чем на 180 градусов то все нормально, она плавно крутиться вокруг своей оси. Если же напряжение контактного рельса стает большое, так что нужно стрелку отклонить больше чем на 180 градусов например на 230, то она делает полный оборот вокруг своей оси.
Как сделать так чтобы если стрелка стоит в положении поворота например в 170 градусов то при увеличении напряжения она крутанулась дальше вправо и стала в положение 230 градусов ?

kup 04.11.2011 20:08

Вы видимо не так считаете: pointerPosition = 164 * Global.valueLineVoltage / Global.AVERAGE_LINE_VOLTAGE;

при indicatorPointer.rotation = 0, у вас стрелка куда показывает?
Должна на "восток", там где у вас "1.0",
при .rotation = -225; -> нулевая отметка,
при .rotation = 45; -> "1.2"

P.S. А можно где-то посмотреть сам тренажер? :)

goodguy 04.11.2011 20:19

Можно использовать свойство TweenMax, которое называется shortRotation. В этой ситуации подойдет в самый раз

strangedk 06.11.2011 02:09

у TweenLite помимо метода to (куда) есть метод from (откуда)

И в принципе если вам нужно повернуть допустим от -250 до 250, то по идее можно сначала повернуть от -250 до 0, а потом от 0 до 250.

Albul 08.11.2011 13:59

Благодарю goodguy, действительно работает:

Код AS3:

TweenMax.to(indicatorPointer, 1, {shortRotation: {rotation: pointerPosition}});

Спасибо kup, я понял идею - ворочать стрелку не от 0 до 360 а от -180 до 180, но на это нужно делать дополнительный перерасчет, а из shortRotation лаконичней получается.


Часовой пояс GMT +4, время: 17:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.