Анимация Starling Framework прерывается при входе в кадр

Я создал базовый веб-проект as3 со скворцом. Все, что я делаю, это создаю простое изображение и в 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;
    }

person kiran s    schedule 29.01.2013    source источник
comment
вы используете событие Starling onEnterFrame?   -  person Ivan Chernykh    schedule 07.05.2013


Ответы (1)


Это потому, что время каждого кадра немного отличается. Чтобы добиться плавной анимации, объявите обработчик onEnterFrame с аргументом passTime (который хранит время, прошедшее с момента предыдущего кадра) и используйте это значение для перемещения объектов, вместо того, чтобы предполагать, что каждый кадр будет длиться 1/frameRate сек.

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 и должна быть более производительной. Если вы используете более старую версию, вы можете получить прошедшее время из соответствующего свойства объекта события.

person skozin    schedule 05.02.2013