Remove Effect

This is a simple effect that can be attached to a component causing it to be removed from the game tree after the specified delay has passed:

remove_effect.dart
 1import 'package:doc_flame_examples/ember.dart';
 2import 'package:flame/components.dart';
 3import 'package:flame/effects.dart';
 4import 'package:flame/events.dart';
 5import 'package:flame/game.dart';
 6
 7class RemoveEffectGame extends FlameGame with TapDetector {
 8  static const double delayTime = 3;
 9  late EmberPlayer ember;
10  late TextComponent textComponent;
11  final RemoveEffect effect = RemoveEffect(delay: delayTime);
12
13  @override
14  Future<void> onLoad() async {
15    add(
16      ember = EmberPlayer(
17        position: size / 2,
18        size: Vector2(45, 40),
19      )..anchor = Anchor.center,
20    );
21    add(textComponent = TextComponent()..position = Vector2.all(5));
22  }
23
24  @override
25  void onTap() {
26    if (children.contains(ember)) {
27      ember.add(effect);
28    } else {
29      effect.reset();
30      add(ember);
31    }
32  }
33
34  @override
35  void update(double dt) {
36    textComponent.text = (effect.controller.progress * delayTime)
37        .toStringAsFixed(2);
38    super.update(dt);
39  }
40}
component.add(RemoveEffect(delay: 3.0));