0

我正在开发一个 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);
            }
        }
4

2 回答 2

1

Regular.easeOut应该执行上述行为。

有时,虽然有多个缓动补间,但 flash 甚至会错过最后一点。

因此,如果您必须使用easeout,请添加一个补间完成事件,您可以在其中手动设置最终点。

否则使用None.easeNone

于 2012-12-11T03:57:01.117 回答
0

你真的应该避免使用 Flash 内置的 Tween 引擎。它缓慢,臃肿,并且缺少很多真正有用的东西

尝试使用TweenLite/TweenMax更好的工具,这两者都具有内置功能,可以像您面对的那样进行短时间旋转。它们比使用默认的 Tween 引擎快得多!(你可以在这里看到)

您不仅可以对这种短轮换问题进行排序,而且您的应用程序将通过其中一个变得更快:-)

于 2012-12-11T16:41:23.773 回答