Files
flame/examples/lib/stories/effects/remove_effect_example.dart
Lukas Klingsbo 2a41d0d683 feat: Move to Flutter 3.0.0 and Dart 2.17.0 (#1713)
This upgrades all packages to Flutter 3.0.0 and fixes all analyze issues that came from that.
2022-06-08 06:04:40 +00:00

47 lines
1.3 KiB
Dart

import 'dart:math';
import 'package:flame/components.dart';
import 'package:flame/effects.dart';
import 'package:flame/game.dart';
import 'package:flame/input.dart';
import 'package:flutter/material.dart';
class RemoveEffectExample extends FlameGame with HasTappables {
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, {super.position, super.paint})
: super(radius: radius);
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;
}
}