C ++ Как продвигать кадр / создавать частоту кадров для анимации из таблицы спрайтов - PullRequest
0 голосов
/ 26 марта 2020

Я хотел бы создать анимацию, которая работает непрерывно, но с регулируемой скоростью. Я попробовал функцию «сна», но, очевидно, это не было решением. До сих пор у меня есть кадр, перемещающийся в al oop от 1 до 10, который представляет местоположение x на листе спрайта с использованием функции 'clock' и остатков. Проблема в том, что частота кадров все еще либо слишком высокая, либо слишком низкая независимо от настроек. Я хотел бы что-то гораздо более точно настроенное (желательно миллисекунды). Это близко к тому, что я должен делать, или есть лучший способ? Я также использую Open Frameworks, если что-нибудь из этой библиотеки поможет.

#include <iostream>
#include <ctime>
using namespace std;

int main()
{
    int SpriteX = 1;

    int SpriteTime;
    int SpriteRemainder;
    int SpriteRemainder2;

    int MoveSprite = 0;

    while (1)
    {

        SpriteTime = clock() * 0.01; //Adjusting the clock() multiplier doesn't seem to do all that much either

        //This is too fast
        SpriteRemainder = SpriteTime % 2;

        //This is too slow
        SpriteRemainder2 = SpriteTime % 3;

        switch (SpriteRemainder) {
        case 0:
            if (MoveSprite == 0) {
                SpriteX += 1;
                MoveSprite = 1;
            }
            break;

        default:
            MoveSprite = 0;
            break;
        }

        if (SpriteX >= 11) {
            SpriteX = 1;
        }

        cout << SpriteX << endl;

    }
}
...