2

我使用以下代码创建了小测试,并尝试执行这些步骤来使用热插拔功能。

  1. 使用调试按钮运行程序
  2. 在渲染函数中创建一个断点,以暂停程序。
  3. 更改 rectangle.width 的值
  4. 编译程序
  5. 让 IntelliJ 重新加载代码。

但这似乎并没有改变屏幕上矩形的大小。

public class HotSwapTest extends ApplicationAdapter {
    OrthographicCamera camera;
    ShapeRenderer shapeRenderer;

    private static final int SCREEN_WIDTH = 800;
    private static final int SCREEN_HEIGHT = 480;

    Rectangle rectangle;


    @Override
    public void create() {
        shapeRenderer = new ShapeRenderer();
        camera = new OrthographicCamera();
        camera.setToOrtho(false, SCREEN_WIDTH, SCREEN_HEIGHT);

        rectangle = new Rectangle();
        rectangle.x = SCREEN_WIDTH / 2 - 64 / 2;
        rectangle.y = 20;
        rectangle.width = 100;
        rectangle.height = 30;
    }

    @Override
    public void render() {
        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

        shapeRenderer.setProjectionMatrix(camera.combined);
        shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
        shapeRenderer.setColor(1, 1, 0, 1);
        shapeRenderer.rect(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
        shapeRenderer.end();

        camera.update(); // only if we're moving the screen though
    }
}
4

1 回答 1

2

键入此内容后意识到我应该在渲染函数中更改矩形的宽度。由于 create 函数不会再次运行。

以下代码正常工作。

public void render() {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    rectangle.width = 5; // Change this line while debugging.
    rectangle.height = 10;

    shapeRenderer.setProjectionMatrix(camera.combined);
    shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
    shapeRenderer.setColor(1, 1, 0, 1);
    shapeRenderer.rect(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
    shapeRenderer.end();

    camera.update(); // only if we're moving the screen though
}
于 2013-12-13T17:17:39.677 回答