我正在尝试转换pyglet中用pygame编写的简单游戏 . 我几乎弄清楚了一切,但现在我正面临这种情况,我有一个像这个例子的背景精灵:

enter image description here

在我的pygame代码中,我用它写这个让它在后台顺利滚动:

base_shift = self.graphic.IMAGES['base'].get_width() - self.COMMON_CONST['screenWidth']
while True:
      base_x = -((-base_x + 3) % base_shift)
      self.screen.blit(self.graphic.IMAGES['base'], (base_x, y))

基本上图像比实际屏幕长,并且一旦它通过图像X和屏幕X之间的增量值,图像再次设置为0 .

我试图在 def update(self, dt): 函数内的pyglet中做同样的事情,但我不知道究竟该怎么做 . 我的意思是我理解dt的含义但仍然..现在移动图像我做这样的事情:

def update(self, dt):
    self.base.x -= 15 * dt

当然,这将继续移动,并不会重置他的立场 . 我怎样才能复制我在pygame中所做的行为?

谢谢

UPDATE

我试试这段代码:

def update(dt):
   self.base.x =  -((-(self.base.x - 15 * dt)) % base_shift)

它似乎有效,但是当它回到0并不完美对齐时它不顺畅 .

UPDATE/2 TEMPORARY SOLUTION

我终于找到了另一个完全不同的解决方案我将图像分成单个图案,如下所示:

enter image description here

然后我重复多次以填充屏幕宽度加2.然后我移动所有这些,当第一个完全超出屏幕尺寸时,我从阵列中删除并添加一个新的 .

我不知道到目前为止是否有更好的解决方案是可以的 .