mirror of
				https://github.com/flame-engine/flame.git
				synced 2025-11-01 01:18:38 +08:00 
			
		
		
		
	 b41622db8f
			
		
	
	b41622db8f
	
	
	
		
			
			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);
 | |
| }
 |