In Chapter 8 of SFML Game Development, Animation is introduced. Although Aircraft's constructor sets mExplosion.setNumFrames(16), the Animation's update function has a while loop that allows mCurrentFrame == mNumFrames in while (mElapsedTime >= timePerFrame && (mCurrentFrame <= mNumFrames || mRepeat)) This would cause some problem when textureRect.top += textureRect.height;