docs: Fix Hover Callbacks so the tap used in the example respects the zoom (#2874)

Fix Hover Callbacks so the tap used in the example respects the zoom.

The example happens to use a tap event to create new squares. However,
since the tap event is bound to the Game instead of the World, had it
had any zoom applied (which it didn't), or any other camera transform,
the squares would have been created on the wrong place. This sends a bad
example to new users and can cause confusion.
This commit is contained in:
Luan Nico
2023-11-26 12:26:00 -05:00
committed by GitHub
parent 501506810b
commit 39edc70206

View File

@ -4,22 +4,31 @@ import 'package:flame/extensions.dart';
import 'package:flame/game.dart';
import 'package:flutter/material.dart';
class HoverCallbacksExample extends FlameGame with TapCallbacks {
class HoverCallbacksExample extends FlameGame {
static const String description = '''
This example shows how to use `HoverCallbacks`s.\n\n
Add more squares by clicking and hover them to change their color.
''';
HoverCallbacksExample() : super(world: HoverCallbacksWorld());
@override
Future<void> onLoad() async {
camera.viewfinder.anchor = Anchor.topLeft;
world.add(HoverSquare(Vector2(200, 500)));
world.add(HoverSquare(Vector2(700, 300)));
camera.viewfinder.zoom = 1.5;
}
}
class HoverCallbacksWorld extends World with TapCallbacks {
@override
Future<void> onLoad() async {
add(HoverSquare(Vector2(200, 500)));
add(HoverSquare(Vector2(700, 300)));
}
@override
void onTapDown(TapDownEvent event) {
world.add(HoverSquare(event.localPosition));
add(HoverSquare(event.localPosition));
}
}