
はじめてのjavaで、はじめてAndroidのゲームを作ってます。
SurfaceviewでThreadを使って簡単なSTGゲームを作ってるのですが
(1)端末のメニューボタンを押した時に、ゲームを一時停止したいのですがどうすればいいのかわかりません。
(2)端末のホームボタンを押して中断した場合、すぐに復帰してもゲームが最初からになってしまいます。
ホームボタンを押したら一時的に中断して、復帰したときに途中から続行させたいのですが、どうすれば途中から続行できるようになるのかわかりません。
ググってもちんぷんかんぷんでした!どうか教えてください。よろしくお願いします!
No.1ベストアンサー
- 回答日時:
アプリケーションを切り替えた時・ホームボタンを押した時に、アプリケーションが発行されるイベントを調べ、その時にアプリケーションの状態をファイルに書き込みます。
自分のアプリケーションに復帰した時のイベントもあるので、その時ファイルからメモリに情報を読み戻します。
別の方法として同じイベントにおいて、Bundleという方法があるようですが…調べてみてください。申し訳ありません。
http://y-anz-m.blogspot.jp/2010/03/androidbundle …
http://techbooster.jpn.org/andriod/application/3 …
この回答への補足
ありがとうございます!
一時的な保存で良いので、まさにBundleの方法で作りたいのですが、
onRestoreInstanceStateが呼び出されなくて、書き出しできませんでした・・・。
surfaceview側にも構成の違うParcelable onSaveInstanceState(),onRestoreInstanceState(Parcelable state)があるようで調べても、うまくできません。
もしよければ、↓のソースのScoreの値をホームボタン押したら一時的に保存して、すぐに復帰した場合に続きからカウントされるように書き換えたソースを教えてください。よろしくお願いします。
//----
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MySurfaceView);
}
}
//----
public class MySurfaceView extends SurfaceView implements
SurfaceHolder.Callback, Runnable {
int score;
Thread thread;
public MySurfaceView(Context context) {
super(context);
getHolder().addCallback(this);
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {}
public void surfaceCreated(SurfaceHolder holder) {
thread = new Thread(this);
thread.start();
}
public void surfaceDestroyed(SurfaceHolder holder) {
thread = null;
}
public void run() {
Canvas canvas = null;
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextSize(50);
while (thread != null) {
score++;
canvas = getHolder().lockCanvas();
if (canvas != null){
canvas.drawColor(Color.BLACK);
canvas.drawText("score" + score, 0, 50, paint);
getHolder().unlockCanvasAndPost(canvas);
}
}
}
すみません。上の補足は気にしないでください。
普通に出来ました。runの中で初期化してたというアホみたいな理由で毎回最初からになっていただけでした。。
でも結果的に解決できたので嬉しいです!
本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
unzip32.dllの利用について(64b...
-
java起動時の日本語引数文字化...
-
IISワーカープロセスが原因でCP...
-
Javaセキュリティによってブロ...
-
プラグインとパッチの違いは?
-
VBAの「for i=1 to cells(…」...
-
JSPファイルで生じるエラーをど...
-
超恥愚問ですが、CとC++の間に...
-
マイクラ1.7.10にcutallなどが...
-
使用しているJUnitのバージョン...
-
EclipseでJavaコンパイラのバー...
-
カレンダー機能にカーソルをつ...
-
Eclipseソース開発画面の行番号...
-
VBScript 月を二桁で取得したい
-
パソコンに詳しいかたお願いします
-
MSFormsとは何ですか?
-
Selenium/VBA/Chrome エラーで...
-
エクリプスのプログラミングに...
-
Javaは暗記科目でしょうか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
IISワーカープロセスが原因でCP...
-
unzip32.dllの利用について(64b...
-
JavaAppretは
-
sandboxとは?
-
ウィンドウを最小化した際の制...
-
プラグインとパッチの違いは?
-
Ctime
-
forte community or j builder ...
-
Visual Basicで通信アプリケー...
-
C#のWindowsフォームアプリケー...
-
VBで作ったものを人にやらせる...
-
Java 購入検討
-
Google App Engineのアップロー...
-
.NET Frameworkとvb.net
-
RSA署名付きアプレットの作...
-
VB.netでxml-rpcの使用は可能??
-
帳票出力について
-
TitaniumでIphoneアプリを終了...
-
JavaでMDB
おすすめ情報