mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-01 09:39:12 +08:00
* Animations, CameraAndViewport, CollisionDetection and Components unified * Added descriptions to effects * Rename input games * Unify input stories * Add info to parallax section * Added descriptions to the rendering examples * Add descriptions to the sprites directory * Fix utils and rendering section * Add descriptions to the widgets section * Delete directory that rebase brought back * Unify game names * Added some styleguide docs for examples * Fix analyze issues * All files should have _example as suffix * Made the FollowComponentExample a bit easier to understand * Change priority of ember
73 lines
1.8 KiB
Dart
73 lines
1.8 KiB
Dart
import 'package:flame/components.dart';
|
|
import 'package:flame/game.dart';
|
|
import 'package:flame/input.dart';
|
|
|
|
// This class only has `HasDraggables` since the game-in-game example moves a
|
|
// draggable component to this game.
|
|
class ComposabilityExample extends FlameGame with HasDraggables {
|
|
static const String description = '''
|
|
In this example we showcase how you can add children to a component and how
|
|
they transform together with their parent, if the parent is a
|
|
`PositionComponent`. This example is not interactive.
|
|
''';
|
|
|
|
late ParentSquare parentSquare;
|
|
|
|
@override
|
|
bool debugMode = true;
|
|
|
|
@override
|
|
Future<void> onLoad() async {
|
|
await super.onLoad();
|
|
parentSquare = ParentSquare(Vector2.all(200), Vector2.all(300))
|
|
..anchor = Anchor.center;
|
|
add(parentSquare);
|
|
}
|
|
|
|
@override
|
|
void update(double dt) {
|
|
super.update(dt);
|
|
parentSquare.angle += dt;
|
|
}
|
|
}
|
|
|
|
class ParentSquare extends RectangleComponent with HasGameRef {
|
|
ParentSquare(Vector2 position, Vector2 size)
|
|
: super(position: position, size: size);
|
|
|
|
@override
|
|
Future<void> onLoad() async {
|
|
super.onLoad();
|
|
createChildren();
|
|
}
|
|
|
|
void createChildren() {
|
|
// All positions here are in relation to the parent's position
|
|
const childSize = 50.0;
|
|
final children = [
|
|
RectangleComponent.square(
|
|
position: Vector2(100, 100),
|
|
size: childSize,
|
|
angle: 2,
|
|
),
|
|
RectangleComponent.square(
|
|
position: Vector2(160, 100),
|
|
size: childSize,
|
|
angle: 3,
|
|
),
|
|
RectangleComponent.square(
|
|
position: Vector2(170, 150),
|
|
size: childSize,
|
|
angle: 4,
|
|
),
|
|
RectangleComponent.square(
|
|
position: Vector2(70, 200),
|
|
size: childSize,
|
|
angle: 5,
|
|
),
|
|
];
|
|
|
|
addAll(children);
|
|
}
|
|
}
|