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绘制方法,但我收到一个错误说
为什么我不能从类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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 详解HDFS多文件Join操作的实例
- java – 如何找到具有给定lat long值和距离的lat的长点
- java – 可以在Eclipse中突出显示一个语句,然后按引号/ etc
- 过滤器链的GlassFish问题:java.lang.IllegalStateExceptio
- Java:版本化的数据结构?
- java.lang.IllegalArgumentException:未知参数名称:custo
- java – DiscriminatorFormula
- Java for循环性能优化实现解析
- java – 程序不显示对象的所需字符串表示形式
- cvc-complex-type.3.2.2:属性xsi:不允许在Java DOM中出现