【发布时间】:2015-03-20 15:37:46
【问题描述】:
我正在阅读本书SDL game development。在第一个项目中,有一些代码用于移动精灵表的渲染帧的坐标:
void Game::update()
{
m_sourceRectangle.x = 128 * int((SDL_GetTicks()/100)%6);
}
我无法理解这一点...我知道它每 100 毫秒沿 x 轴移动 m_sourceRectangle 128 个像素...但它实际上是如何工作的?有人可以分解这段代码的每个元素来帮助我理解吗?
我不明白为什么需要调用SDL_GetTicks() 来执行此操作...
我也知道%6 的存在是因为动画中有 6 帧......但它实际上是如何做到的呢?
书上说:
这里我们使用
SDL_GetTicks()找出自 SDL 初始化以来的毫秒数。然后我们将它除以我们想要的帧之间的时间量(以毫秒为单位),然后使用模运算符来保持 它在我们动画中的帧数范围内。此代码将(每 100 毫秒)将源矩形的 x 值移动 128 像素(一帧的宽度),乘以我们想要的当前帧,给我们正确的位置。构建项目,您应该会看到显示的动画。
但我不确定我是否理解为什么获得自 SDL 初始化以来的毫秒数。
【问题讨论】: