mirror of
				https://github.com/flame-engine/flame.git
				synced 2025-10-31 08:56:01 +08:00 
			
		
		
		
	 5225a4ebd5
			
		
	
	5225a4ebd5
	
	
	
		
			
			This simple refactor allows us to write class MyGame extends Game, instead of a more awkward class MyGame with Game. However, using ... with Game still continues to work, so no changes necessary for the users.
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:flame/game.dart';
 | |
| import 'package:flame/input.dart';
 | |
| import 'package:flame/palette.dart';
 | |
| import 'package:flutter/services.dart';
 | |
| import 'package:flutter/widgets.dart';
 | |
| 
 | |
| class NoFlameGameExample extends Game with KeyboardEvents {
 | |
|   static const String description = '''
 | |
|     This example showcases how to create a game without the FlameGame.
 | |
|     It also briefly showcases how to act on keyboard events.
 | |
|     Usage: Use A W S D to steer the rectangle.
 | |
|   ''';
 | |
| 
 | |
|   static final Paint white = BasicPalette.white.paint();
 | |
|   static const int speed = 200;
 | |
| 
 | |
|   Rect rect = const Rect.fromLTWH(0, 100, 100, 100);
 | |
|   final Vector2 velocity = Vector2(0, 0);
 | |
| 
 | |
|   @override
 | |
|   void update(double dt) {
 | |
|     final displacement = velocity * (speed * dt);
 | |
|     rect = rect.translate(displacement.x, displacement.y);
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   void render(Canvas canvas) {
 | |
|     canvas.drawRect(rect, white);
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   KeyEventResult onKeyEvent(
 | |
|     RawKeyEvent event,
 | |
|     Set<LogicalKeyboardKey> keysPressed,
 | |
|   ) {
 | |
|     final isKeyDown = event is RawKeyDownEvent;
 | |
| 
 | |
|     if (event.logicalKey == LogicalKeyboardKey.keyA) {
 | |
|       velocity.x = isKeyDown ? -1 : 0;
 | |
|     } else if (event.logicalKey == LogicalKeyboardKey.keyD) {
 | |
|       velocity.x = isKeyDown ? 1 : 0;
 | |
|     } else if (event.logicalKey == LogicalKeyboardKey.keyW) {
 | |
|       velocity.y = isKeyDown ? -1 : 0;
 | |
|     } else if (event.logicalKey == LogicalKeyboardKey.keyS) {
 | |
|       velocity.y = isKeyDown ? 1 : 0;
 | |
|     }
 | |
| 
 | |
|     return super.onKeyEvent(event, keysPressed);
 | |
|   }
 | |
| }
 |