在 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);
}
我的游戏中有一个 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);
}