Androidでゲーム開発して、テストしていたら特定の機種だけ落ちる場所が!
 
Android6.0.1でおそらくMarshmallowでエラーが吐かれるようです。
 
修正前

canvas.rotate(player.getRotated(), player.getX() + (player.getWidth() / 2), player.getY() + (player.getHeight() / 2));
		player.draw(canvas);
		canvas.restore();
		frontground.draw(canvas);

canvas.restore();の部分でIllegalStateException: Underflow in restore - more restores than savesと怒られてしまいました。

canvas.restore();はcanvasの状態を復元させるメソッドですが、復元する状態がわからないのが問題みたいです。
解決するには、canvasを編集する前に状態をしっかり保存してあげなければいけません。

修正後

canvas.save();
		canvas.rotate(player.getRotated(), player.getX() + (player.getWidth() / 2), player.getY() + (player.getHeight() / 2));
		player.draw(canvas);
		canvas.restore();
		frontground.draw(canvas);

このコードではcanvas.rotate()をする前にcanvas.save();で状態を保存してあげることで解決しました!




おすすめの記事