沿Bézier曲线移动物体时的生涩动画(无插件)

时间:2013-10-24 18:25:50

标签: actionscript-3 math language-agnostic bezier

我正在使用Loom SDK作为我当前的项目 - 它的语法是AS3和.NET之间的混合。我试图沿Bézier曲线移动一个物体(我不能使用Greensock等,因为它不适用于织机)。

以下是代码:

public override function onFrame(): void    {

        var t:Number = ( Platform.getTime() - _startTime) / _duration;

        if (t < 1) {
            var newPos = curveBetweenTwoPoint(_start, _dest, _bezier, t);
            _entity.x = newPos.x;
            _entity.y = newPos.y;
        } else {
            // finished!
            if (_finishCallback != null) {
                _finishCallback();
            }
        }
    }

public function curveBetweenTwoPoint(start:Point, dest:Point, bezier:Point, t:Number) : Point {
        var x:Number = (  (1-t)*(1-t)*start.x + 2*(1-t)*t*bezier.x+t*t*dest.x);
        var y:Number = (  (1-t)*(1-t)*start.y + 2*(1-t)*t*bezier.y+t*t*dest.y);

        return new Point(x, y);
    }

这基本上插入了对象随时间的(x,y)坐标。但是,一旦持续时间小于1秒,动画就会非常生涩 - 我怀疑这是因为Platform.getTime()没有以足够的精度返回当前时钟时间。

有什么方法可以改进我的代码吗?

0 个答案:

没有答案