【问题标题】:Method in Class Instance not changing variables? [closed]类实例中的方法不改变变量? [关闭]
【发布时间】:2013-12-15 01:59:41
【问题描述】:

我有两个班级:Main 和 Unit。 Unit 类是这样初始化的,变量 x 和 y 在类的顶部声明:

public Unit(int health, int damage, int x, int y) {
        this.x = x;
        this.y = y;
        Main.drawQuad(x, y, 15, 15);
    }

我有一个方法,它采用x 或y 变量并将它们加1。据我了解,这会使它移动(Main.drawQuad 是一种简单地绘制四边形的方法,但缩短了)。相反,它什么也不做,x 和 y 永远不会改变。

我需要以不同的方式声明它们吗?以不同的方式访问它们?我尝试了不同的变量范围。我必须通过 Main 类更改它们吗?我正在与 LWJGL 合作。

【问题讨论】:

  • 我们需要查看您更改变量的代码。而且我真的认为,如果你无法弄清楚这一点,那么你不应该尝试制作游戏。无意冒犯。
  • Java 是按值传递的。
  • @opiop65,我以前从未遇到过这样的问题。一方面,我没有受过适当的教育,而且我在 LWJGL 方面做得并不多。
  • 而现在,为了让它发挥作用,就是“x += 5;”。

标签: java class scope lwjgl


【解决方案1】:

没有。该方法不会使其移动。 “让它动起来”是你的工作。您必须每次通过递增 x 和 y 值来重绘四边形,然后再次调用绘图 API。

【讨论】:

  • 好的,谢谢。我的假设是因为实例是在更新循环中调用的渲染方法中创建的,所以它会调整。
  • @IHazABone 非常欢迎您。尝试将 drawQuad 放入 for-loop 中,在其中每次迭代增加 x 和 y,并每次调用 drawQuad。走着瞧吧。 :-)
  • 会发生什么是它绘制了一个全新的四边形而不删除前一个/:我记得以前发生过一次,但我不记得如何修复它或我做错了什么。
  • 你需要在渲染每一帧之前调用 glClear(GL_COLOR_BUFFER)。
  • 那行(更具体地说:glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 在渲染方法的顶部被调用。我应该在 Unit 类中调用它吗?
【解决方案2】:

有很多事情可能出错,你还没有真正展示可能出错的代码。

  • 也许你只是认为你在改变 x 和 y。

  • 也许您没有使用新值重新绘制四边形。

  • 也许您正在更改错误对象中的 x 和 y。

最好的办法是使用调试器单步执行代码,并密切关注值是什么、它们何时更改、它们所在的对象以及这些值之后会发生什么。

【讨论】:

  • 我没有意识到我必须从单元类中重新绘制四边形。我只在主课上这样做。谢谢。
猜你喜欢
  • 2017-02-15
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 2015-07-23
相关资源
最近更新 更多