我是游戏编程的新手,我在 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");
}
}
答案 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做过手机游戏......