在 Flutter Flame 中滚动背景

Scrolling background in Flutter Flame

我的游戏中有一个 sprite 组件列表,代表三个我想无限滚动的背景 sprite 图像。我使用下面的代码初始化、更新和渲染 sprite 组件,但是 sprite 都以不同的速度移动,游戏有时会非常慢,我做错了什么?

正在初始化:

List<SpriteComponent> bkgList = [];

bkgImage = await images.load('BGFull.png');
for (int i = 0; i < MAX_BKG_COUNT; i++) {
  final spr = Sprite(bkgImage);
  bkgList.add(SpriteComponent(
    sprite: spr,
    position: Vector2(640.0 * i, 0),
    size: Vector2(640, 384)
  ));
}

更新:

for (int j = 0; j < bkgList.length; j++) {
  bkgList[j].position.x -= 1.0;

  if (bkgList[j].position.x < -640.0) {
    bkgList.removeAt(0);
    bkgList.add(SpriteComponent(
        sprite: Sprite(bkgImage),
        position: Vector2(bkgList.last.position.x + 640.0, 0),
        size: Vector2(640, 384)
    ));
  }
}

渲染:

for (int z = 0; z < bkgList.length; z++) {
  bkgList[z].render(canvas);
}

您最有可能为此使用 ParallaxComponent,您可以找到 here. For loading the spritesheet that you have in BGFull.png you can use the SpriteSheet class 的文档,然后将图像从那里传递到 ParallaxComponent .

但是从你现在的代码来看,问题可能是你没有在 onLoad 方法中进行初始化,但我无法从你的代码片段中看出。