You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Libgdx中if条件内调用batch.draw绘制Texture无显示问题求助

问题解决:LibGDX中条件触发后Texture不显示的问题

问题原因

你当前的代码只在第50次按下空格的那一帧执行了batch.draw()操作,而LibGDX的渲染是持续刷新的——每一帧都会重新绘制屏幕内容。这意味着你画的Texture只在那一瞬间出现一次,之后的帧不会再绘制它,所以肉眼几乎看不到。

解决方案

需要用一个状态变量标记是否要显示Texture,然后在每帧的渲染流程中判断这个变量,持续绘制:

  1. 先在类中添加状态变量:
private int clicks = 0;
private boolean showSpider = false; // 标记是否显示Texture
  1. 修改按键触发的逻辑,只修改状态变量,不在这里绘制:
if (Gdx.input.isKeyJustPressed(Input.Keys.SPACE)) {
    clicks++;
    System.out.println(clicks);
    
    if (clicks == 50) {
        showSpider = true; // 触发显示状态
        System.out.println("you have 50");
    }
}
  1. 在render()方法的主绘制流程中,根据状态变量绘制Texture:
@Override
public void render(float delta) {
    // 必须先清屏,否则画面会残留之前的渲染内容
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    
    batch.begin();
    // 这里可以绘制你其他需要显示的内容
    // ...
    
    // 根据状态判断是否绘制目标Texture
    if (showSpider) {
        batch.draw(spider, 100, 100);
    }
    batch.end();
}

额外注意事项

  • 确保spider Texture已经正确加载(比如在create()方法中完成加载,且未被提前释放)。
  • 若之后需要隐藏这个Texture,只需将showSpider设为false即可。

内容的提问来源于stack exchange,提问作者Marcel1510

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 02:52:07