【发布时间】:2019-06-25 18:52:54
【问题描述】:
舞台上的演员很少,画线连接他们的中心,如图形、节点和边。节点是可分级的。在拖动时,我使用以下代码
public void touchDragged(InputEvent event, float eventOffsetX, float
eventOffsetY, int pointer)
{
float deltaX = eventOffsetX - self.grabOffsetX;
float deltaY = eventOffsetY - self.grabOffsetY;
self.moveBy(deltaX, deltaY);
moveCoordinatesBy((int)deltaX,(int)deltaY);
}
方法 moveCoordinatesBy 正在更新节点中心的坐标。这是用来画线(Edges)连接的。这工作正常。
我的问题是 - 当我对节点使用 moveTo 操作时,我需要同时更新边缘。为此,我需要更新那里的中心坐标。为此,我在节点的 act 方法中使用以下代码 -
public void act(float dt)
{
super.act(dt);
Vector2 loc = new Vector2();
loc.x = self.getX()+ self.getWidth()/2;
loc.y = self.getY() + self.getHeight()/2;
Vector2 v = new Vector2();
v = self.localToStageCoordinates(loc);
setCoordinates((int)v.x, (int)v.y);
}
我得到的坐标不是节点的中心,它们几乎乘以 2。我做错了吗?
还有getWidth() 和self.getHeight() 返回两倍大小。当演员(节点)被缩放时,getWidth() 和 self.getHeight() 会根据它在舞台上的位置返回任意值。离(0,0)越远,返回值越大。
【问题讨论】: