ページ 11

ポーズ処理

Posted: 2015年3月21日(土) 14:38
by スライパ

コード:

@Override
	public void run() {//お決まり
		
		Yomikomi();
		
		StageSet();
		ms.playSound(bgm);
    
		while(thread != null && threadRun){
			
			switch(scene){
			case 1:
				Title();
				break;
				
			case 2:
				WorldMap();
				break;
			case 3:
				Honpen();//今回はここでの処理のバグです
				break;
	    }
			try {
				Thread.sleep(50);//お決まり
			} catch (Exception e){}
		
		}
	}
@Override
	public boolean onTouchEvent(MotionEvent event){
		int action = event.getAction();
		tx = (int)event.getX();// 現在タッチ中の座標
		ty = (int)event.getY();

		if(scene==3){
		switch(action){
		case MotionEvent.ACTION_DOWN:

			Pose();
                }
	}
}

private void Pose(){
               pose = new Rect(0,0,(int)disp_w,50);
		if(ms.RectTap(tx, ty, pose)==true){
			if(poseflag==true){poseflag=false;}else{poseflag=true;}
		}
	}




public void Honpen(){
		canvas = holder.lockCanvas();//お決まり

		//ポース用
		if(poseflag==false){


//ここでアップデート、描画をしています

}

holder.unlockCanvasAndPost(canvas);
}
簡易的にポーズ処理の実験をしています
ポーズをすると、押したフレームとその一つ前のフレームが交互に描画されビクビクしてしまいます。画面更新に何か不具合があるのでしょうか。
(onTouchEventはposeflagに関係なく動き続けます)

Re: ポーズ処理

Posted: 2015年3月22日(日) 18:15
by ISLe()
スライパ さんが書きました:ポーズをすると、押したフレームとその一つ前のフレームが交互に描画されビクビクしてしまいます。画面更新に何か不具合があるのでしょうか。
ダブルバッファに描き込まれた内容が交互に表示されているのでしょう。

何も描かずにSurfaceHolder#unlockCanvasAndPostを呼び出すとビデオメモリに残っているゴミが表示されることになります。

Re: ポーズ処理

Posted: 2015年3月22日(日) 18:27
by みけCAT

コード:

canvas = holder.lockCanvas();//お決まり
holder.unlockCanvasAndPost(canvas);
この2行もposeflag==falseの時のみ実行するようにするとどうなりますか?

Re: ポーズ処理

Posted: 2015年3月22日(日) 20:34
by スライパ
ISLe() さんが書きました: 何も描かずにSurfaceHolder#unlockCanvasAndPostを呼び出すとビデオメモリに残っているゴミが表示されることになります。
その仕様は知りませんでした。ありがとうございます

Re: ポーズ処理

Posted: 2015年3月22日(日) 22:22
by スライパ
>>みけCATさん

普通に解決しちゃいました。ありがとうございます。
どうやらcanasのロック・アンロックは毎フレームしなきゃ、という固定観念に囚われていたようです。

Re: ポーズ処理

Posted: 2015年3月22日(日) 22:38
by ISLe()
スライパ さんが書きました:どうやらcanasのロック・アンロックは毎フレームしなきゃ、という固定観念に囚われていたようです。
その固定観念は特に間違ってはいない気がします。

将来的に…
ポーズ中に画面に「PAUSE」と表示したい
→表示されない
→ポーズ中は画面を更新しないので当たり前
というふうなことがかなり高い確率で起きるのではないかと予想します。