Java LibGDX不';不清洁缓冲液

Java LibGDX不';不清洁缓冲液,java,android,libgdx,buffer,Java,Android,Libgdx,Buffer,我不知道如何清除libGDX中的缓冲区,在这种情况下, GL30.GL\u颜色\u缓冲\u位不工作 package com.mygdx.game.Screens; import Artifacts.Champ; import com.badlogic.gdx.Game; import com.badlogic.gdx.Screen; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; import com.badlogic.gd

我不知道如何清除libGDX中的缓冲区,在这种情况下, GL30.GL\u颜色\u缓冲\u位不工作

package com.mygdx.game.Screens;

import Artifacts.Champ;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.*;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.scenes.scene2d.*;
import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton.ImageButtonStyle;
import com.badlogic.gdx.scenes.scene2d.utils.SpriteDrawable;
import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.viewport.ScreenViewport;
import com.mygdx.game.MyGdxGame;
import java.util.ArrayList;

public class GameScreen implements Screen {
    private Stage stage;
    private Game game;
    ArrayList <Champ> champs=new ArrayList();;

    public GameScreen(Game aGame) {
        game = aGame;
        stage = new Stage(new ScreenViewport());
        ImageButton pj;

        Table camp;
        champs.add(new Champ("Ximet",new Texture("Champ/Ximet.png")));        
        champs.add(new Champ("Jordi",new Texture("Champ/Jordi.jpg")));        
        champs.add(new Champ("Camilo",new Texture("Champ/Camilo.jpg")));        
        champs.add(new Champ("Vicent",new Texture("Champ/Vicent.jpg")));
        int x=100, y=250;
        for (final Champ champ : champs) {
            camp=new Table();
            pj=new ImageButton(new SpriteDrawable(new Sprite(champ.getLogo())));
            pj.setPosition(x, y);
            camp.add(pj).size(100, 100);
            camp.setPosition(x, y);
            x=x+100;
            camp.addListener(new InputListener(){
                @Override
                public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
                    Label name = new Label(champ.nom, MyGdxGame.gameSkin,"big-black");
                    name.setPosition(10,400);
                    stage.addActor(name);
                }
                @Override
                public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
                    return true;
                }
            });
            stage.addActor(camp);
        }
        Label title = new Label("Select Champ", MyGdxGame.gameSkin,"big-black");
        title.setAlignment(Align.center);
        title.setY(Gdx.graphics.getHeight()*2/3);
        title.setWidth(Gdx.graphics.getWidth());
        stage.addActor(title);

        TextButton backButton = new TextButton("Back",MyGdxGame.gameSkin);
        backButton.setWidth(Gdx.graphics.getWidth()/2);
        backButton.setPosition(Gdx.graphics.getWidth()/2-backButton.getWidth()/2,Gdx.graphics.getHeight()/4-backButton.getHeight()/2);
        backButton.addListener(new InputListener(){

            @Override
            public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
                game.setScreen(new Principal((MyGdxGame)game));
            }
            @Override
            public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
                return true;
            }
        });
        stage.addActor(backButton);
    }

    @Override
    public void show() {
        Gdx.app.log("MainScreen","show");
        Gdx.input.setInputProcessor(stage);

    }

    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(1, 1, 1, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        stage.act();
        stage.draw();
    }

    @Override
    public void resize(int width, int height) {

    }

    @Override
    public void pause() {

    }

    @Override
    public void resume() {

    }

    @Override
    public void hide() {

    }

    @Override
    public void dispose() {
        stage.dispose();
    }

}
package com.mygdx.game.Screens;
进口文物;
导入com.badlogic.gdx.Game;
导入com.badlogic.gdx.Screen;
导入com.badlogic.gdx.Game;
导入com.badlogic.gdx.gdx;
导入com.badlogic.gdx.Screen;
导入com.badlogic.gdx.graphics.*;
导入com.badlogic.gdx.graphics.g2d.BitmapFont;
导入com.badlogic.gdx.graphics.g2d.Sprite;
导入com.badlogic.gdx.graphics.g2d.SpriteBatch;
导入com.badlogic.gdx.scenes.scene2d.*;
导入com.badlogic.gdx.scenes.scene2d.ui.*;
导入com.badlogic.gdx.scenes.scene2d.ui.ImageButton.ImageButtonStyle;
导入com.badlogic.gdx.scenes.scene2d.utils.SpriteDrawable;
导入com.badlogic.gdx.utils.Align;
导入com.badlogic.gdx.utils.viewport.ScreenViewport;
导入com.mygdx.game.MyGdxGame;
导入java.util.ArrayList;
公共类GameScreen实现屏幕{
私人舞台;
私人游戏;
ArrayList champs=新的ArrayList();;
公共游戏屏幕(游戏aGame){
游戏=aGame;
阶段=新阶段(新屏幕视口());
图像按钮pj;
桌上露营;
添加(新Champ(“Ximet”,新纹理(“Champ/Ximet.png”));
添加(新Champ(“Jordi”,新纹理(“Champ/Jordi.jpg”));
添加(新Champ(“Camilo”,新纹理(“Champ/Camilo.jpg”));
champs.add(新Champ(“Vicent”),新纹理(“Champ/Vicent.jpg”);
int x=100,y=250;
为(决赛冠军:冠军){
camp=新表();
pj=新的图像按钮(新的SpriteDrawable(新的Sprite(champ.getLogo()));
pj.设定位置(x,y);
营地。增加(pj)。大小(100100);
设置位置(x,y);
x=x+100;
addListener(新的InputListener(){
@凌驾
公共无效修补(InputEvent事件、浮点x、浮点y、整数指针、整数按钮){
标签名称=新标签(champ.nom,MyGdxGame.gameSkin,“大黑”);
名称。设置位置(10400);
舞台演员(姓名);
}
@凌驾
公共布尔接地(InputEvent事件、浮点x、浮点y、整数指针、整数按钮){
返回true;
}
});
舞台演员(夏令营);
}
标签标题=新标签(“选择冠军”,MyGdxGame.gameSkin,“大黑”);
标题.设置对齐(对齐.中心);
title.setY(Gdx.graphics.getHeight()*2/3);
title.setWidth(Gdx.graphics.getWidth());
舞台演员(头衔);
TextButton backButton=新建TextButton(“后退”,MyGdxGame.gameSkin);
setWidth(Gdx.graphics.getWidth()/2);
backButton.setPosition(Gdx.graphics.getWidth()/2-backButton.getWidth()/2,Gdx.graphics.getHeight()/4-backButton.getHeight()/2);
addListener(新的InputListener(){
@凌驾
公共无效修补(InputEvent事件、浮点x、浮点y、整数指针、整数按钮){
设置屏幕(新主体((MyGdxGame)游戏));
}
@凌驾
公共布尔接地(InputEvent事件、浮点x、浮点y、整数指针、整数按钮){
返回true;
}
});
stage.addActor(backButton);
}
@凌驾
公开展览({
Gdx.app.log(“主屏幕”、“显示”);
Gdx.input.setInputProcessor(阶段);
}
@凌驾
公共无效渲染(浮动增量){
Gdx.gl.glClearColor(1,1,1,1);
Gdx.gl.glClear(GL20.gl\u颜色\u缓冲\u位);
舞台表演;
stage.draw();
}
@凌驾
公共空心调整大小(整型宽度、整型高度){
}
@凌驾
公共空间暂停(){
}
@凌驾
公众简历(){
}
@凌驾
公共空间隐藏(){
}
@凌驾
公共空间处置(){
stage.dispose();
}
}
这个屏幕显示了所有的球员,当你选择其中一个时,上面会出现她的名字,这很有效,但当我选择另一个不同的球员时,名字仍然在那里

我是begginer,正在学习LigGDX拾取代码,我正在尝试做一个rpg游戏

p.S.2在屏幕上循环打印冠军的arraylist,将它们添加到选择其中一个的按钮,如果您知道另一种更简单和优化的方法,我将不胜感激


我知道不建议在循环中初始化表。如果我在循环外初始化,当我选择冠军时,在顶部显示arraylist中所有对象的名称。

我不确定我是否理解您最初关于屏幕清除的问题,但您说如果选择一名球员,名称将显示,但选择后续球员时,继续显示第一名。这是因为您的camp.addListener修饰方法将名称添加到stage--stage.addActor(name);--但我不认为你会把它从舞台上移开。因此,每次渲染之后,仍将显示此名称,因为演员仍在舞台上。当您更改Player时,您需要从后台删除名称标签。看起来您只添加了标签,并且没有任何代码来删除标签。您需要添加一些代码,以便在选择新champ时删除标签,或者使用1个标签,然后根据所选champ更改文本。