Libgdx演员moveTo动作不起作用

时间:2018-06-12 12:05:21

标签: java android libgdx actor

我试图通过动作将舞台上的演员从一个点移动到另一个点并且它不起作用,我已经尝试了几个小时而且它只是不起作用,我将很乐意帮助..

我已经在互联网上搜索了代码,我尝试的所有代码都没有用,我真的不明白这个代码有什么问题,它基本上和互联网教程中的工作一样

演员类:

            player = new Player(playerTexture,screenWidth/2,screenHeight-200,playerTexture.getWidth(),playerTexture.getHeight(),screenWidth,screenHeight);
 MoveToAction action = new MoveToAction();
        action.setPosition(300f,0f);
        action.setDuration(10f);
        player.addAction(action);

  @Override
public void render(float delta) {
    Gdx.gl.glClearColor(1, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.setProjectionMatrix(orthographicCamera.combined);
    batch.begin();
    // batch.draw(playerTexture,10,10,10,10);

    batch.end();

    stage.act(Gdx.graphics.getDeltaTime());

    stage.draw(); //this will call the batch to draw the sprite
}

和主要课程:

java.lang.NullPointerException: Attempt to invoke interface method 'void fragment.MyRecyclerViewAdapter$MyClickListener.onItemClick(int, android.view.View)' on a null object reference

1 个答案:

答案 0 :(得分:0)

Actor已经有x,y,width和height字段。由于您创建了自己的,因此您隐藏了这些参数。

您的问题的根源是您无法覆盖setPosition()以使用您的字段。因此移动操作会调用它并更改您隐藏的字段,当您绘制它时,您使用的是您自己的尚未更改的字段。

不要隐藏字段。这非常容易出错。您应该删除我上面提到的字段,以及所有getter和setter的覆盖。

以下是OOP的经验法则:如果你在没有调用super方法的情况下覆盖任何getter或setter,你可能会破坏某些东西。

不相关,但你应该使用TextureRegion而不是Sprite。 Sprite是一个TextureRegion,具有大小和位置的附加参数。由于这些功能也在Actor中,因此使用Sprite是多余的并且容易出错。