加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – LibGDX Actor绘制覆盖

发布时间:2020-12-15 04:16:34 所属栏目:Java 来源:网络整理
导读:我试图覆盖我的Player类,它扩展了Actor绘制方法,但我收到一个错误说 The method draw(SpriteBatch,float) of type Player must override or implement a supertype method 为什么我不能从类Actor中覆盖默认的draw方法?这是我在Player类中的代码. public cla
我试图覆盖我的Player类,它扩展了Actor绘制方法,但我收到一个错误说

The method draw(SpriteBatch,float) of type Player must override or
implement a supertype method

为什么我不能从类Actor中覆盖默认的draw方法?这是我在Player类中的代码.

public class Player extends Actor {
    @Override
    public void draw(SpriteBatch batch,float parentAlpha) {
        Gdx.app.log(getName(),"Drawing player");
    }

    public Player() {
        setName("mainPlayer");

        playerBounds = new Rectangle(100,100,32,32);
    }
}

这是我正在绘制舞台的类中的代码.

public class Mainscreen implements Screen {
    // Class TAG
    private static final String TAG = "Main Screen";

    // Screen Variable(s)
    private Awakening g;
    private SpriteBatch sprBatch;
    private OrthographicCamera gameCamera;
    private Player mainPlayer;

    // Screen Stage(s)
    private sMain sMain;

    @Override
    public void dispose() {
        sprBatch.dispose();
        sMain.dispose();
    }

    @Override
    public void hide() {
        g.inputController.removeProcessor(sMain);

        dispose();
    }

    public Mainscreen(Awakening game){
        g = game;

        sMain = new sMain(g,g.configMgr.getWidth(),g.configMgr.getHeight(),true);

        gameCamera = new OrthographicCamera();
        gameCamera.setToOrtho(false,sMain.getWidth(),sMain.getHeight());

        mainPlayer = new Player(g,gameCamera);
        g.setPlayer(mainPlayer);

        sprBatch = new SpriteBatch();

        g.mapMgr.setMap(g,gameCamera,"TestMap",mainPlayer);

        sMain.addActor(mainPlayer);
    }

    @Override
    public void pause() {g.togglePause(true);g.debugOut(TAG,"pause()");}

    @Override
    public void render(float delta) {
        if(!g.isPaused()){

            sMain.act(delta);

            Gdx.gl.glClearColor(.125f,.125f,0);
            Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

            gameCamera.update();

            g.mapMgr.updateNPCS();

            sprBatch.setProjectionMatrix(gameCamera.combined);
            sprBatch.begin();
            g.mapMgr.draw(gameCamera,new int[] {0,1});

            sMain.draw(); // Draw player/NPCs

            //g.getPlayer().draw(sprBatch,0f);

            g.mapMgr.drawCollisionRectangles(gameCamera);
            sprBatch.end();
        }
    }

    @Override
    public void resize(int width,int height) {g.debugOut(TAG,"resize("+width+","+height+")");}

    @Override
    public void resume() {g.togglePause(false);g.debugOut(TAG,"resume()");}

    @Override
    public void show() {
        g.debugOut(TAG,"show()");

        g.inputController.addProcessor(sMain);
        g.updateInput();
    }
}

我不确定发生了什么,但很确定我可以覆盖之前的抽奖.

解决方法

你必须像这样覆盖它:

@Override
public void draw(Batch batch,float parentAlpha) {
    Gdx.app.log(getName(),"Drawing player");
}

将SpriteBatch更改为Batch.参考Actor#draw

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读