07/08/24 16:17:39
>>993
こんな感じでメインループを空回ししてフレーム固定させてる。
ダイアログ出したりサスペンドの処理は長くなるので割愛。
public void appStart(){
long bt = System.currentTimeMillis(); // 処理基準時間
long nt = 0; // 次に処理する時間
long t, ct = 1;
while( true ){
t = System.currentTimeMillis() - bt;
if( nt > t){
try{
Thread.sleep( 1 );
} catch( Exception e){}
continue;
}
// スキップしたフレーム数分メインループを回す
for(int i = (int)(( t - nt ) * FLAMERATE / 1000); i >= 0; i--)
{
keyUp = keyArea;
keyArea = keyDown | this.getKeypadState();
keyUp = keyUp & (~keyArea);
mainLoop();
ct++;
keyDown = 0;
}
nt = ct * 1000L / FLAMERATE;
paint( getGraphics() );
}
}