- 1 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 18:13:16 ]
- NTT DoCoMoのiモード携帯電話用Javaに関する話題を扱うスレッドです。
※DoCoMo以外は下記スレへ。 CLDC+MIDP+携帯電話用Javaスレッド part 6 pc11.2ch.net/test/read.cgi/tech/1155174514/ ■ iアプリ特有ではなくJava一般に関する質問はこちらへ 【初心者】Java質問・相談スレッド99【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1173026128/ ■ iモード携帯電話用Java(iアプリ)まとめサイト ton.my-sv.net/ ■関連スレ 【日本携帯】Mascot Capsule/Micro3D【標準】 pc8.2ch.net/test/read.cgi/tech/1117773530/ 過去スレ Part13 ttp://pc11.2ch.net/test/read.cgi/tech/1164168601/
- 993 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:00:01 ]
- えらそうなこといってあれなんだが、実機ではいまいち正確に保ってくれないんだ
まぁ一応置いておく、誰か改変きぼう public class FPS { private static final int FLAMERATE = 30; //フレームレート。 private static final int FLAMETIME = 1000 / FLAMERATE; //1周期あたりの_秒 private boolean isFix; // FPSを固定するか private long oldTime; // 一つ前の時間(Control) private long beforeTime; // 一つ前の時間(Draw) private long fpsCount; // 計測用FPS private long fps; // 表示用FPS(1秒に一度更新) FPS() { isFix = true; beforeTime = 0; oldTime = 0; }
- 994 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:00:34 ]
- あ、コンパイル通らねぇw
>>984 × if(keyUp & (1<<Display.KEY_UP) != 0 ) { ○ if((keyUp & (1<<Display.KEY_UP)) != 0 ) { 他にもありそうだなぁ(=´∇`=) で、残り7レス。
- 995 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:01:09 ]
- 続き
/** * スレッドのループ内に置くとFLAMERATEを調整してくれる * */ public void control() { if(!isFix) return; long nowTime = System.currentTimeMillis(); //経過時間。 long difTime = nowTime - oldTime; if( difTime >= FLAMETIME ) //時間が余っている場合。 { oldTime = nowTime; return; } difTime = FLAMETIME - difTime; //余り時間分待つ。 try { Thread.sleep( difTime ); } catch( Exception e ){}; oldTime = oldTime + FLAMETIME; }
- 996 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:01:43 ]
- ラスト
/** * FPSを計測して描画する * */ public void draw(Graphics g) { long time = System.currentTimeMillis(); // FPS の計測 if(time - beforeTime >= 1000) { // 1秒経ったところで表示用のFPSに代入 fps = fpsCount; // 初期化 beforeTime = time; fpsCount = 0; } fpsCount++; g.drawString("FPS:" + fps, 5, 15); } }
- 997 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:04:54 ]
- 余り時間計測する前に
Thread.yield(); を呼んで、他のスレッドの処理を入れてやるのが吉
- 998 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:09:24 ]
- さぁうめるざますよ!
- 999 名前:345 mailto:sage [2007/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() ); } }
- 1000 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:18:51 ]
- 345って・・・orz
983でした。ってことで1000
- 1001 名前:1001 [Over 1000 Thread]
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
|

|