Starling 框架动画在进入帧时断断续续



我用starling创建了一个基本的as3 web项目。我所做的只是创建一个简单的图像,并在onEnterframe中沿x移动图像。但似乎动画/运动并不流畅,每隔几帧就会出现帧跳跃/生涩。下面是 onEnterFrame 和用于创建图像的测试函数。非常感谢对此的任何帮助。

    private function onEnterFrame(e:Event):void
    {
        if(!img)
            return;
        img.x += 1;
        if(img.x >= 960)
            img.x = 0;
    }
    private function test():void
    {
          img = new Image(sAssets.getTextureAtlas("atlas").getTexture("flight_00"));
          addChild(img);
          img.x = 0;
          img.y = 320;
    }

这是因为每一帧的时间略有不同。若要实现平滑动画,请使用 passedTime 参数(存储自上一帧以来经过的时间)声明 onEnterFrame 处理程序,并使用此值移动对象,而不是假设每一帧将持续 1/帧速率秒。

private function onEnterFrame(passedTime:Number):void
{
    if(!img)
        return;
    img.x += passedTime * 100; // speed is 100 px/sec
    if(img.x >= 960)
        img.x = 0;
}

注意:这种形式的事件处理程序(不带事件参数)在最新版本的 Starling 中受支持,并且应该性能更高。如果使用旧版本,则可以从事件对象的相应属性中获取传递的时间。

最新更新