我有一个自定义火焰游戏 TextComponent,我想在渲染覆盖中绘制额外的东西。我使用 4 个不同的公式来计算位置,但每次尝试都是错误的。这些公式都不会计算粘在移动文本上的圆圈位置。相反,它们的移动就好像涉及某种比例因子一样。有什么想法我做错了吗?
void render(Canvas canvas) {
super.render(canvas);
canvas.drawCircle(Offset(position.x, position.y), 10, redPaint);
Vector2 pos = position / scale.x;
Component? parent = this.parent;
while (parent != null) {
if (parent is PositionComponent) {
pos -= parent.position / parent.scale.x;
}
parent = parent.parent;
}
canvas.drawCircle(Offset(pos.x, pos.y), 10, yellowPaint);
canvas.drawCircle(
Offset(absolutePosition.x / absoluteScale.x, absolutePosition.y / absoluteScale.y),
10,
bluePaint);
canvas.drawCircle(Offset(position.x / scale.x, position.y / scale.y), 10, greenPaint);
}
啊 - 看起来在调用 render() 时已经设置了转换,因此绘制到 render() 覆盖内的位置 (0,0) 将绘制到 textComponent 的左上角/左上角,并随之移动:canvas.drawCircle (偏移量.0, 10, redPaint);