mirror of
				https://github.com/flame-engine/flame.git
				synced 2025-11-04 21:17:13 +08:00 
			
		
		
		
	* Animations, CameraAndViewport, CollisionDetection and Components unified * Added descriptions to effects * Rename input games * Unify input stories * Add info to parallax section * Added descriptions to the rendering examples * Add descriptions to the sprites directory * Fix utils and rendering section * Add descriptions to the widgets section * Delete directory that rebase brought back * Unify game names * Added some styleguide docs for examples * Fix analyze issues * All files should have _example as suffix * Made the FollowComponentExample a bit easier to understand * Change priority of ember
		
			
				
	
	
		
			76 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'dart:ui';
 | 
						|
 | 
						|
import 'package:flame/components.dart';
 | 
						|
import 'package:flame/game.dart';
 | 
						|
import 'package:flame/layers.dart';
 | 
						|
 | 
						|
class LayerExample extends FlameGame {
 | 
						|
  static const String description = '''
 | 
						|
    In this example we show how layers can be used to produce a shadow effect.
 | 
						|
  ''';
 | 
						|
 | 
						|
  late Layer gameLayer;
 | 
						|
  late Layer backgroundLayer;
 | 
						|
 | 
						|
  @override
 | 
						|
  Future<void> onLoad() async {
 | 
						|
    await super.onLoad();
 | 
						|
    final playerSprite = Sprite(await images.load('layers/player.png'));
 | 
						|
    final enemySprite = Sprite(await images.load('layers/enemy.png'));
 | 
						|
    final backgroundSprite = Sprite(await images.load('layers/background.png'));
 | 
						|
 | 
						|
    gameLayer = GameLayer(playerSprite, enemySprite);
 | 
						|
    backgroundLayer = BackgroundLayer(backgroundSprite);
 | 
						|
  }
 | 
						|
 | 
						|
  @override
 | 
						|
  void render(Canvas canvas) {
 | 
						|
    super.render(canvas);
 | 
						|
    gameLayer.render(canvas);
 | 
						|
    backgroundLayer.render(canvas);
 | 
						|
  }
 | 
						|
 | 
						|
  @override
 | 
						|
  Color backgroundColor() => const Color(0xFF38607C);
 | 
						|
}
 | 
						|
 | 
						|
class GameLayer extends DynamicLayer {
 | 
						|
  final Sprite playerSprite;
 | 
						|
  final Sprite enemySprite;
 | 
						|
 | 
						|
  GameLayer(this.playerSprite, this.enemySprite) {
 | 
						|
    preProcessors.add(ShadowProcessor());
 | 
						|
  }
 | 
						|
 | 
						|
  @override
 | 
						|
  void drawLayer() {
 | 
						|
    playerSprite.render(
 | 
						|
      canvas,
 | 
						|
      position: Vector2.all(50),
 | 
						|
      size: Vector2.all(150),
 | 
						|
    );
 | 
						|
    enemySprite.render(
 | 
						|
      canvas,
 | 
						|
      position: Vector2(250, 150),
 | 
						|
      size: Vector2(100, 50),
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
class BackgroundLayer extends PreRenderedLayer {
 | 
						|
  final Sprite sprite;
 | 
						|
 | 
						|
  BackgroundLayer(this.sprite) {
 | 
						|
    preProcessors.add(ShadowProcessor());
 | 
						|
  }
 | 
						|
 | 
						|
  @override
 | 
						|
  void drawLayer() {
 | 
						|
    sprite.render(
 | 
						|
      canvas,
 | 
						|
      position: Vector2(50, 200),
 | 
						|
      size: Vector2(300, 150),
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |