舞台上的线描

时间:2019-02-01 08:11:05

标签: android libgdx stage

舞台上的actor很少,绘制的线条将它们的中心连接起来,例如图形,节点和边缘。节点是可分级的。在Drag上,我使用以下代码

   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正在更新节点中心的坐标。用于绘制连接的线(边)。这很好。

我的问题是-当我对节点使用moveTo动作时,我需要同时更新边缘。为此,我需要更新该中心的坐标。为此,我在Node的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()返回两倍的大小。缩放actor(节点)时,getWidth()self.getHeight()会根据其在舞台上的放置方式返回套利值。离(0,0)更大的返回值。

1 个答案:

答案 0 :(得分:0)

v = self.localToStageCoordinates(loc);

不需要上面的代码,因为所有参与者都直接添加到了舞台上。现在删除localToStageCoordinates(loc)即可正常工作。