ポーズ処理

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
スライパ
記事: 9
登録日時: 14年前
住所: 北海道→東京

ポーズ処理

#1

投稿記事 by スライパ » 10年前

コード:

@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に関係なく動き続けます)

ISLe()

Re: ポーズ処理

#2

投稿記事 by ISLe() » 10年前

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

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

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ポーズ処理

#3

投稿記事 by みけCAT » 10年前

コード:

canvas = holder.lockCanvas();//お決まり
holder.unlockCanvasAndPost(canvas);
この2行もposeflag==falseの時のみ実行するようにするとどうなりますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
スライパ
記事: 9
登録日時: 14年前
住所: 北海道→東京

Re: ポーズ処理

#4

投稿記事 by スライパ » 10年前

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

アバター
スライパ
記事: 9
登録日時: 14年前
住所: 北海道→東京

Re: ポーズ処理

#5

投稿記事 by スライパ » 10年前

>>みけCATさん

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

ISLe()

Re: ポーズ処理

#6

投稿記事 by ISLe() » 10年前

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る