我已经完成了我的第一个Android游戏的退出并且它运行良好。现在我需要让屏幕每秒刷新一次,这样我的游戏计数器就会刷新。
执行计时器会出现此问题:
只有创建视图层次结构的原始线程才能触及其视图。
我已经搜索了stackoverflow,解决方法是创建一个runnable。我不知道它是如何工作的。我创建一个,然后程序中断,因为上下文不能在runnable
中工作error: constructor DrawGame in class DrawGame cannot be applied to given types;
required: Context
found: no arguments
reason: actual and formal argument lists differ in length
我该怎么办?为什么我需要一个可运行的。我的游戏是一种简单的国际象棋类游戏。
试图这样做:
public class DrawGame extends View implements OnTouchListener {
Timer turnTimer = new Timer("timeLeft", false);
TimerTask countDown = new TimerTask() {
@Override
public void run() {
invalidate();
}
};
public DrawGame(Context context){
super(context);
Turns.turnTimeCounter();
Turns.yourTurn();
turnTimer.scheduleAtFixedRate(countDown, 1000, 1000 );
}
@Override
public void onDraw(Canvas canvas){
//lot of code
}
答案 0 :(得分:1)
当您在主线程中时,您只能编辑View
的状态。当你在计时器中时,你来自一个单独的线程。使用此命令将操作发布到主线程。
counter.post(new Runnable() {
public void run() {
counter.setText(newTime);
}
});