class MySprite extends SpriteComponent { late final Vector2 _position; MySprite(this._position): super(); @override Future<void> onLoad() async { await super.onLoad(); sprite = await Sprite.load('chara.png'); position = _position; size = Vector2(100, 100); } @override void update(double delta) { super.update(delta); } }
class SampleGame extends FlameGame with HasTappableComponents { Vector2 _position = Vector2(100, 100); final List<PositionComponent> _sprites = <PositionComponent>[]; @override Color backgroundColor() => const Color(0xffCCCCFF); @override Future<void> onLoad() async { await super.onLoad(); var sp1 = GreenRectSprite(Vector2(200, 100)); _sprites.add(sp1); add(sp1); var sp2 = RedCircleSprite(Vector2(100, 200)); _sprites.add(sp2); add(sp2); add(WhiteTextSprite(Vector2(25, 25))); } @override void onTapDown(TapDownEvent event) { _position = event.canvasPosition - Vector2(50, 50); super.onTapDown(event); } } class RedCircleSprite extends CircleComponent with HasGameRef<SampleGame> { late Vector2 _position; RedCircleSprite(this._position): super(); @override Future<void> onLoad() async { await super.onLoad(); setColor(Colors.red); position = _position; size = Vector2(100, 100); } @override void update(double delta) { final d = (gameRef._position - position) / 10; position += d * delta * 100; super.update(delta); } } class GreenRectSprite extends PositionComponent with HasGameRef<SampleGame>{ late Vector2 _position; late Paint _paint; GreenRectSprite(this._position): super(); @override Future<void> onLoad() async { await super.onLoad(); position = _position; size = Vector2(100, 100); _paint = Paint() ..style = PaintingStyle.fill ..color = Colors.green; } @override void update(double delta) { final d = (gameRef._position - position) / 50; position += d * delta * 100; super.update(delta); } } class GreenRectSprite extends PositionComponent with HasGameRef<SampleGame> { late Vector2 _position; late Paint _paint; GreenRectSprite(this._position): super(); @override Future<void> onLoad() async { await super.onLoad(); position = _position; size = Vector2(100, 100); _paint = Paint() ..style = PaintingStyle.fill ..color = Colors.green; } @override void update(double delta) { final d = (gameRef._position - position) / 50; position += d * delta * 100; super.update(delta); } @override void render(Canvas canvas) { super.render(canvas); final r = Rect.fromLTWH(0, 0, 100, 100); canvas.drawRect(r, _paint); } } class WhiteTextSprite extends TextComponent { late Vector2 _position; WhiteTextSprite(this._position): super(); @override Future<void> onLoad() async { await super.onLoad(); position = _position; text = "Hello Flame"; textRenderer = TextPaint( style: TextStyle( fontSize: 48.0, fontWeight: FontWeight.bold, color: Colors.white, ), ); } }