flutter 位置成分的锚定变元混淆

dw1jzc5e  于 2023-02-25  发布在  Flutter
关注(0)|答案(1)|浏览(123)

我是flame和flutter的新手,对PositionComponent的锚参数有一些疑问。
根据火焰帮助文档:因此,例如,如果要将子对象定位在父对象的***中心***上方50个逻辑像素处,则应执行以下操作:

Future<void> onLoad() async {
  final parent = PositionComponent(
    position: Vector2(100, 100),
    size: Vector2(100, 100),
    anchor: Anchor.center,
  );
  final child = PositionComponent(position: Vector2(0, -50));
  await parent.add(child);
}

但是,在我的实验中,子组件出现在其父组件左上角***上方50个像素处。
下面是我使用的代码片段,其中PositionComponent替换为RectangleComponent,以便可视化锚的效果。

final parent = RectangleComponent(
  position: Vector2(100, 100),
  size: Vector2(100, 100),
  anchor: Anchor.center,
)..setColor(Colors.blue);
add(parent);

final child = RectangleComponent(
  position: Vector2(0, -50),
  size: Vector2(10, 10),
)..setColor(Colors.yellow);
parent.add(child);

在Windows 11上使用Flame 1.6.0和Flutter 3.7.3。
如果有人能帮助指出我可能做错了什么,我将不胜感激。

xwbd5t1u

xwbd5t1u1#

你说的完全正确,那些文件是错的。我现在就更新。
锚仅确定两件事:
1.应从中计算零部件自身位置的位置。
1.零部件应围绕零部件的哪个部分旋转。
因此,如果您想将组件放置在其父组件上方50个像素处,您可以这样做:

final parent = RectangleComponent(
  position: Vector2(100, 100),
  size: Vector2(100, 100),
)..setColor(Colors.blue);
add(parent);

final child = RectangleComponent(
  position: Vector2(0, -50),
  size: Vector2(10, 10),
  anchor: Anchor.bottomLeft,
)..setColor(Colors.yellow);
parent.add(child);

相关问题