[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 07/22 13:26 / Filesize : 254 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

iモード携帯電話用Java(iアプリ) Part14



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を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<254KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef