Установить вращение анимации вспышки на кратчайшее расстояние as3?

Я работаю над проектом интерактивного стола Adobe Air и пытаюсь сделать несколько поворотов. По большей части он работает нормально, но иногда он крутится вокруг версии, просто немного вращаясь в другом направлении. Есть ли у кого-нибудь хороший способ предотвратить это во флэш-подростках?

Фрагмент моего кода:

var rotatePos:Number;
        if (event.rotation > 180) { rotatePos = event.rotation - 360; } else { rotatePos = event.rotation; }
        var rotateDifference:Number = Math.abs(Math.abs(rotatePos) - Math.abs(Number(rotationCurrent[tempCircleNumber])));
        if ( rotateDifference > 4 && rotateDifference < 60) {
            rotateTheFiducial();
        } else if ( rotateDifference > 100 ) {
            trace("too far, ignore : " + rotateDifference);
        }
        function rotateTheFiducial():void
        {
            try
            {
                var cardTweenRotation:Tween = new Tween(MovieClip(fiducialArray[tempCircleNumber]), "rotation", Regular.easeOut, Number(rotationCurrent[tempCircleNumber]), rotatePos, .2, true);

                rotationCurrent[tempCircleNumber] = rotatePos;

            }
            catch (e:Error)
            {
                trace(fiducialId + " : Rotate Error : " + e);
            }
        }

person HeroicNate    schedule 11.12.2012    source источник


Ответы (2)


Вам действительно следует избегать использования встроенного в Flash движка Tween. Он медленный, раздутый и лишенный многих действительно полезных вещей.

Попробуйте использовать TweenLite / TweenMax или лучше, eaze, которые оба имеют встроенные функции для коротких поворотов, как вы видите. Они намного быстрее, чем при использовании движка Tween по умолчанию! (как вы можете видеть здесь)

Не только вы сможете отсортировать такие проблемы с коротким вращением, но и ваше приложение станет быстрее с одной из них :-)

person elFlashor    schedule 11.12.2012
comment
да, я закончил тем, что пошел с твинлайтом - person HeroicNate; 11.12.2012

Regular.easeOut должен выполнять указанное выше поведение.

Иногда при наличии нескольких анимаций с замедлением вспышка даже пропускает конечную точку.

Поэтому, если вам все же нужно использовать легкость вывода, добавьте событие завершения анимации движения, в котором вы устанавливаете конечную точку вручную.

В противном случае используйте None .easeNone

person loxxy    schedule 11.12.2012
comment
хм .. Думаю, гринсок шорт Rotation попробую. Мне нравится его смягчение. - person HeroicNate; 11.12.2012