mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-01 19:12:31 +08:00
Just solves the warnings that the new Flutter version complains about (which makes us lose 10 points on pub).
74 lines
1.6 KiB
Dart
74 lines
1.6 KiB
Dart
import 'dart:ui';
|
|
|
|
import 'package:flame/components.dart';
|
|
import 'package:flame/game.dart';
|
|
import 'package:flame/input.dart';
|
|
|
|
enum RobotState {
|
|
idle,
|
|
running,
|
|
}
|
|
|
|
class AnimationGroupExample extends FlameGame with TapDetector {
|
|
static const description = '''
|
|
This example shows how to create a component that can be switched between
|
|
different states to change the animation that is playing.\n\n
|
|
|
|
Usage: Click/tap and hold the screen to change state and then let go to go
|
|
back to the original animation.
|
|
''';
|
|
|
|
late SpriteAnimationGroupComponent<RobotState> robot;
|
|
|
|
@override
|
|
Future<void> onLoad() async {
|
|
final running = await loadSpriteAnimation(
|
|
'animations/robot.png',
|
|
SpriteAnimationData.sequenced(
|
|
amount: 8,
|
|
stepTime: 0.2,
|
|
textureSize: Vector2(16, 18),
|
|
),
|
|
);
|
|
final idle = await loadSpriteAnimation(
|
|
'animations/robot-idle.png',
|
|
SpriteAnimationData.sequenced(
|
|
amount: 4,
|
|
stepTime: 0.4,
|
|
textureSize: Vector2(16, 18),
|
|
),
|
|
);
|
|
|
|
final robotSize = Vector2(64, 72);
|
|
robot = SpriteAnimationGroupComponent<RobotState>(
|
|
animations: {
|
|
RobotState.running: running,
|
|
RobotState.idle: idle,
|
|
},
|
|
current: RobotState.idle,
|
|
position: size / 2 - robotSize / 2,
|
|
size: robotSize,
|
|
);
|
|
|
|
add(robot);
|
|
}
|
|
|
|
@override
|
|
void onTapDown(_) {
|
|
robot.current = RobotState.running;
|
|
}
|
|
|
|
@override
|
|
void onTapCancel() {
|
|
robot.current = RobotState.idle;
|
|
}
|
|
|
|
@override
|
|
void onTapUp(_) {
|
|
robot.current = RobotState.idle;
|
|
}
|
|
|
|
@override
|
|
Color backgroundColor() => const Color(0xFF222222);
|
|
}
|