在屏幕中显示经过的时间为Score java libgdx

时间:2016-01-26 20:17:48

标签: java android bitmap libgdx

我是游戏编程的新手,我在 Android Studio 中使用libgdx构建了一个。

我希望得分与PlayState中的已用时间相同。

如何使用"得分"将其放在右上角?标签旁边?

请帮忙!我被困了!

这是我在PlayState

中制作的一些代码
    public class PlayState extends State {
    private Texture bg;
    private Texture ground;

    long startTime;

    public static BitmapFont font;
    private int score;
    private String scoreText;


    public PlayState(GameStateManager gsm) {
        super(gsm);
        bg = new Texture("bg.png");
        ground = new Texture("ground.png");

        startTime = System.currentTimeMillis();

        font = new BitmapFont(Gdx.files.internal("font.fnt"));
        font.getData().setScale(.25f, .25f);
    }

    @Override
    protected void handleInput() {

    }

    @Override
    public void update(float dt) {
        handleInput();

       cam.update();
    }

    @Override
    public void render(SpriteBatch sb) {
        sb.setProjectionMatrix(cam.combined);
        sb.begin();
        sb.draw(bg, cam.position.x - (cam.viewportWidth / 2), 0);
        System.out.println("Score = " + ((System.currentTimeMillis() - startTime) / 100));
        sb.end();
    }

    @Override
    public void dispose() {
        bg.dispose();
        ground.dispose();
        System.out.println("Play State Disposed");
    }
}

1 个答案:

答案 0 :(得分:1)

在xml中,将TextView放在右上角。您可以使用处理程序,以便可以同时更新时间和UI。这是我现在正在使用的东西..

您的XML看起来像这样

<TextView
   android:id="@+id/txt_Timer"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentRight="true"
   android:layout_marginRight="5dp" />

我把它放在我的FrameLayout

在您的活动中,您可以通过此操作启动计时器......

//Define global variable for time elapse and TextView
private int timeElapsed = 0;
private TextView txt_Timer;

//In the onCreate method define
txt_Timer = (TextView) findViewById(R.id.txt_View);
txt_Timer.setText(Integer.toString(timeElapsed));

//Place this wheree
Handler handler = new Handler();
Runnable r = new Runnable() {
public void run() {
    //Update and display
    timeElapsed += 1;
    txt_Timer.setText(Integer.toString(timeElapsed));
    //Call this again in one second (1000 milliseconds)
    handler.postDelayed(this, 1000);
    }
};

您可能希望全局声明Runnable,以便可以访问该类中的其他位置。当你想启动计时器时,你可以打电话....

handler.postDelayed(r, 1000);

如果您想暂停计时器,可以拨打....

handler.removeCallbacks(r);

我不知道这是否会解决您的问题,但它应该有效,假设您正在参加活动。我从未用libgdx做过手机游戏......