[英]How to use timer for scoring in Android?
我打算使用一個可見的計時器,該計時器將從30秒倒計時到0秒。 此計時器將成為我的游戲應用程序評分的基礎,因為每次觸摸移動的精靈(包含數字)但與請求的數字不匹配(如窗口/通知中所示)時,都會扣除當前剩余時間5秒(-5)。 但是,如果觸摸了包含匹配編號的精靈,計時器將停止並重新開始游戲(或移至下一個級別)。
下面是該代碼touchEvent
里面GameView
類:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (System.currentTimeMillis() - lastClick > 300) {
lastClick = System.currentTimeMillis();
float x = event.getX();
float y = event.getY();
synchronized (getHolder()) {
for (int i = sprites.size() - 1; i >= 0; i--) {
Sprite sprite = sprites.get(i);
if (sprite.wasPopped(x, y)) {
sprites.remove(sprite);
spritePopped.add(new TempSprite(temps, this, x, y, pop));
break;
}
}
}
}
return true;
}
每次觸摸移動的精靈周圍的區域時( sprite.wasPopped
),都會將其從屏幕上移除(並從分配的列表中移除),並spritePopped
顯示圖像( spritePopped
)以指示已觸摸的位置(以增強效果)。 。 如何為計時器創建單獨的類並在GameView
使用它? 到目前為止,我遇到了使用滴答聲進行評分的方法,該評分是根據某個類中調用了多少update()
事件來計時的。 任何意見/建議都將非常有幫助。
您可以使用TimerTask
但不建議這樣做,因為由於未在主線程上運行,它可能會產生一些不良影響。
您應該做的是獲取deltaTime
並將其存儲在變量中。
private float displayedTime;
Public void timer(){ //call in update()
displayedTime += deltaTime;
}
然后,您可以與此混合使用以獲得完整的秒數或您喜歡的任何計時器。
您不應在更新方法中使用任何類型的計數器來檢查時間或增加延遲,因為這會對無法以完整FPS運行游戲的設備產生不良影響。
我發現了與此類似的問題,在這里計時器是在單獨的類中創建的:
import android.os.CountDownTimer;
import android.widget.TextView;
public class MyCount extends CountDownTimer {
static TextView timeDisplay;
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
public void onFinish() {
timeDisplay.setText("Time has ended. Game over.");
//restart();
}
public void onTick(long millisUntilFinished) {
timeDisplay.setText("Left: " + millisUntilFinished / 1000);
}
}
然后在GameView類的一個單獨函數中調用此函數(游戲開始后即開始):
public void setTimer() {
timeDisplay = new TextView(this);
this.setContentView(timeDisplay);
MyCount counter = new MyCount(30000, 1000);
counter.start();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.