mirror of
https://github.com/flame-engine/flame.git
synced 2025-10-28 03:16:09 +08:00
Update min Dart constraint to 3.8, which will enable us to use the fancier collection literals. This requires bumping the min Flutter version as well: <img width="1892" height="1122" alt="image" src="https://github.com/user-attachments/assets/7c7b07fc-4d96-4987-824d-9a7133ecfb85" />
98 lines
2.7 KiB
Dart
98 lines
2.7 KiB
Dart
import 'package:flame/components.dart';
|
|
import 'package:flame/game.dart';
|
|
import 'package:flame/sprite.dart';
|
|
|
|
class SpriteSheetExample extends FlameGame {
|
|
static const String description = '''
|
|
In this example we show how to load images and how to create animations from
|
|
sprite sheets.
|
|
''';
|
|
|
|
@override
|
|
Future<void> onLoad() async {
|
|
final spriteSheet = SpriteSheet(
|
|
image: await images.load('sprite_sheet.png'),
|
|
srcSize: Vector2(16.0, 18.0),
|
|
);
|
|
|
|
final vampireAnimation = spriteSheet.createAnimation(
|
|
row: 0,
|
|
stepTime: 0.1,
|
|
to: 7,
|
|
);
|
|
|
|
final ghostAnimation = spriteSheet.createAnimation(
|
|
row: 1,
|
|
stepTime: 0.1,
|
|
to: 7,
|
|
);
|
|
|
|
final ghostAnimationVariableStepTimes = spriteSheet
|
|
.createAnimationWithVariableStepTimes(
|
|
row: 1,
|
|
to: 7,
|
|
stepTimes: [0.1, 0.1, 0.3, 0.3, 0.5, 0.3, 0.1],
|
|
);
|
|
|
|
final customVampireAnimation = SpriteAnimation.fromFrameData(
|
|
spriteSheet.image,
|
|
SpriteAnimationData([
|
|
spriteSheet.createFrameData(0, 0, stepTime: 0.1),
|
|
spriteSheet.createFrameData(0, 1, stepTime: 0.1),
|
|
spriteSheet.createFrameData(0, 2, stepTime: 0.3),
|
|
spriteSheet.createFrameDataFromId(4, stepTime: 0.3),
|
|
spriteSheet.createFrameDataFromId(5, stepTime: 0.5),
|
|
spriteSheet.createFrameDataFromId(6, stepTime: 0.3),
|
|
spriteSheet.createFrameDataFromId(7, stepTime: 0.1),
|
|
]),
|
|
);
|
|
|
|
final spriteSize = Vector2(80.0, 90.0);
|
|
|
|
final vampireComponent = SpriteAnimationComponent(
|
|
animation: vampireAnimation,
|
|
position: Vector2(150, 100),
|
|
size: spriteSize,
|
|
);
|
|
|
|
final ghostComponent = SpriteAnimationComponent(
|
|
animation: ghostAnimation,
|
|
position: Vector2(150, 220),
|
|
size: spriteSize,
|
|
);
|
|
|
|
final ghostAnimationVariableStepTimesComponent = SpriteAnimationComponent(
|
|
animation: ghostAnimationVariableStepTimes,
|
|
position: Vector2(250, 220),
|
|
size: spriteSize,
|
|
);
|
|
|
|
final customVampireComponent = SpriteAnimationComponent(
|
|
animation: customVampireAnimation,
|
|
position: Vector2(250, 100),
|
|
size: spriteSize,
|
|
);
|
|
|
|
add(vampireComponent);
|
|
add(ghostComponent);
|
|
add(ghostAnimationVariableStepTimesComponent);
|
|
add(customVampireComponent);
|
|
|
|
// Some plain sprites
|
|
final vampireSpriteComponent = SpriteComponent(
|
|
sprite: spriteSheet.getSprite(0, 0),
|
|
position: Vector2(50, 100),
|
|
size: spriteSize,
|
|
);
|
|
|
|
final ghostSpriteComponent = SpriteComponent(
|
|
sprite: spriteSheet.getSprite(1, 0),
|
|
size: spriteSize,
|
|
position: Vector2(50, 220),
|
|
);
|
|
|
|
add(vampireSpriteComponent);
|
|
add(ghostSpriteComponent);
|
|
}
|
|
}
|