我是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。
如果有人能帮助指出我可能做错了什么,我将不胜感激。
1条答案
按热度按时间xwbd5t1u1#
你说的完全正确,那些文件是错的。我现在就更新。
锚仅确定两件事:
1.应从中计算零部件自身位置的位置。
1.零部件应围绕零部件的哪个部分旋转。
因此,如果您想将组件放置在其父组件上方50个像素处,您可以这样做: