Files
flame/examples/lib/stories/effects/remove_effect_example.dart
Lukas Klingsbo b7a2d3fdf8 Simplified the usage of ShapeComponent (#1068)
* Simplified the usage of ShapeComponent

* Default constructor for _RandomCircle

* Use default constructor

* Forced Anchor.center on ShapeComponent

* Fix examples using SquareComponent

* Removed unnecesary import

* Renamed edgeLength to size
2021-11-03 14:30:58 +01:00

47 lines
1.4 KiB
Dart

import 'dart:math';
import 'package:flame/components.dart';
import 'package:flame/game.dart';
import 'package:flame/input.dart';
import 'package:flame/src/effects2/remove_effect.dart'; // ignore: implementation_imports
import 'package:flutter/material.dart';
class RemoveEffectExample extends FlameGame with HasTappableComponents {
static const description = '''
Click on any circle to apply a RemoveEffect, which will make the circle
disappear after a 0.5 second delay.
''';
@override
void onMount() {
super.onMount();
camera.viewport = FixedResolutionViewport(Vector2(400, 600));
final rng = Random();
for (var i = 0; i < 20; i++) {
add(_RandomCircle.random(rng));
}
}
}
class _RandomCircle extends CircleComponent with Tappable {
_RandomCircle(double radius, {Vector2? position, Paint? paint})
: super(radius, position: position, paint: paint);
factory _RandomCircle.random(Random rng) {
final radius = rng.nextDouble() * 30 + 10;
final position = Vector2(
rng.nextDouble() * 320 + 40,
rng.nextDouble() * 520 + 40,
);
final paint = Paint()
..color = Colors.primaries[rng.nextInt(Colors.primaries.length)];
return _RandomCircle(radius, position: position, paint: paint);
}
@override
bool onTapDown(TapDownInfo info) {
add(RemoveEffect(delay: 0.5));
return false;
}
}