【问题标题】:Line Drawing on stage舞台线条画
【发布时间】: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)越远,返回值越大。

【问题讨论】:

    标签: android libgdx stage


    【解决方案1】:
    v = self.localToStageCoordinates(loc);
    

    不需要上面的代码,因为所有的演员都是直接添加到舞台上的。通过删除localToStageCoordinates(loc),它现在可以正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2015-12-09
      • 2014-03-02
      • 2012-11-22
      • 2017-10-03
      • 2017-12-17
      相关资源
      最近更新 更多