我想动画一个精灵.要做到这一点,我有一个给我一个毫秒时间的自动收报机.根据我希望精灵显示不同图像的时间.不幸的是,除了一堆if语句之外,我无法想到一个简单而漂亮的方法.
if (ticker_.getElapsedTime().asMilliseconds() >= ANIMATION_STEP * 0 &&
ticker_.getElapsedTime().asMilliseconds() < ANIMATION_STEP * 1)
{
sprite_.setTexture(*game_->getResourceManager().getTexture("animation/explosion_00.png"));
}
if (ticker_.getElapsedTime().asMilliseconds() >= ANIMATION_STEP * 1 &&
ticker_.getElapsedTime().asMilliseconds() < ANIMATION_STEP * 2)
{
sprite_.setTexture(*game_->getResourceManager().getTexture("animation/explosion_01.png"));
}
// 10 more of these ...
if (ticker_.getElapsedTime().asMilliseconds() >= ANIMATION_STEP * 13 &&
ticker_.getElapsedTime().asMilliseconds() < ANIMATION_STEP * 14)
{
sprite_.setTexture(*game_->getResourceManager().getTexture("animation/explosion_13.png"));
}
Run Code Online (Sandbox Code Playgroud)
怎么样的
int frame = ticker_.getElapsedTime().asMilliseconds() / ANIMATION_STEP;
if (frame < MAX_FRAMES) {
std::string filename = "animation/explosion_"
+ std::to_string(frame) + ".png";
}
Run Code Online (Sandbox Code Playgroud)