public class GameLoopThread extends Thread
{
static final long FPS = 10;
private GameView view;
private boolean running = false;
public GameLoopThread(GameView view)
{
this.view = view;
}
public void setRunning(boolean run)
{
running = run;
}
@Override
public void run()
{
long ticksPS = 1000/FPS;
long startTime;
long sleepTime;
while (running)
{
Canvas c = null;
startTime = System.currentTimeMillis();
try
{
c = view.getHolder().lockCanvas();
synchronized (view.getHolder())
{
view.onDraw(c);
}
}
finally
{
if (c != null)
{
view.getHolder().unlockCanvasAndPost(c);
}
}
sleepTime = ticksPS-(System.currentTimeMillis() - startTime);
try
{
if (sleepTime > 0)
sleep(sleepTime);
else
sleep(10);
}
catch (Exception e){
}
}
}
}
私の混乱は私が初期化したことを意味します。その後 私が割り当てられた - ?>setRunning(boolean run)メソッドを理解する上での問題
public void setRunning(boolean run)
{
running = run;
}
ので、どのような「実行すると、」本当に「実行」の谷ものですsombodyプラザsetRunning(ブール実行)する方法を説明し、保持しています。
あなたはスレッドをプログラミングしていますが、このような単純なセッターメソッドが何か分かりません。犯行はありませんが、基本的にはまずhttp://download.oracle.com/javase/tutorial/java/index.htmlから始めてください。スレッドは非常に複雑な問題です。 –
'running'が' volatile'と宣言されていないので( 'setRunning(...)'が別のスレッドによって呼び出されると仮定して)、このクラスはとにかく壊れています。 – mre
実行はすでにfalseと宣言されています。親愛なるfrend .. private boolean running = false; – sanjay