#flutter #asynchronous #flame
Вопрос:
class MyGame extends BaseGame with HasTapableComponents {
SpriteAnimationComponent girl = SpriteAnimationComponent();
MyGame();
@override
Future<void> onLoad() async {
final sprites = [0, 1, 2,3,4,5,6,7,8,9]
.map((i) async => await Sprite.load('Attack__00$i.png'))
.toList();
girl = SpriteAnimationComponent(
animation: SpriteAnimation.spriteList(sprites, stepTime: 0.01),
size: Vector2.all(100)
);
add(girl);
print(size);
}
}
Следуя документам github для flutter flame для реализации компонента spriteanimation, animation: SpriteAnimation.spriteList(sprites, ...)
. Проблема здесь, как я заметил, заключается в том, что sprites
это будущий список спрайтов, в то время как spriteList требует список спрайтов. Это проблема в документах, или я где-то ошибаюсь?
Ответ №1:
Вам нужно подождать, пока список будущих спрайтов материализуется, вот так:
final sprites = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
.map((i) => Sprite.load('Attack__00$i.png'));
final animation = SpriteAnimation.spriteList(
await Future.wait(sprites),
stepTime: 0.01,
);
girl = SpriteAnimationComponent(
animation: animation,
size: Vector2.all(100)
);
add(girl);
Правка: Я вижу, что в документах что-то не так, я их обновлю.