ホームへ戻る

s2.14 戻るボタンでやり直す


 OS標準のボタンありますよね。「戻る」「ホーム」「メニュー」の3つが一般的です。
前節までのプログラムでは、一度ゲームオーバーやゲームクリアになると、もう何もできなくなっていました。
なので、OS標準のボタン「戻る」を押したらゲームがやり直せるようにしてみましょう。

戻るボタンのイベント取得方法は非常に簡単です。

onKeyDownメソッドをオーバーライドすれば良いだけです。プログラムコードを見てみましょう。

↓IrairaBarActivity.java (
赤字部 変更)

public class IrairaBarActivity extends Activity {

        GameSurfaceView _view;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

                getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
                requestWindowFeature(Window.FEATURE_NO_TITLE);

                _view = new GameSurfaceView(this);
                setContentView(_view);
                AcSensor.Inst().onCreate(this); // センサー初期化
        }

        @Override
        protected void onResume() { // アクティビティが動き始める時呼ばれる
                super.onResume();
                AcSensor.Inst().onResume();// 開始時にセンサーを動かし始める
        }

        @Override
        protected void onPause() { // アクティビティの動きが止まる時呼ばれる
                super.onPause();
                AcSensor.Inst().onPause();// 中断時にセンサーを止める
        }

        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {//ボタンが押された時に呼ばれる
                if (keyCode == KeyEvent.KEYCODE_BACK) {//戻るボタンなら
                        _view = new GameSurfaceView(this);
                        setContentView(_view);
                        return false;
                } else {//それ以外のボタンなら標準の動きをさせる
                        return super.onKeyDown(keyCode, event);
                }
        }
}


今まで_viewは無く、いきなりsetContentViewに突っ込んでいましたが、格納する変数を用意しました。
ボタンが押されるとonKeyDownメソッドが呼ばれます。KeyCodeにキーコードが入っていますから、戻るボタンの時だけ処理をします。
それ以外の時は親のメソッドを呼び、デフォルト動作するようにして下さい。

戻るボタンが押されると、GameSurfaceViewを作り直して、Viewを再セットします。
すると綺麗さっぱり初期状態になります。
Viewごと作り直す必要はなく、GameMgrに初期化メソッドを持たせる方が効率的ではありますが、
今回はサンプルなので、丸ごと作り直しています。

さてこれでリセットできるようになりました。
障害物に接触して操作不能になっても戻るボタンを押すことでまた操作可能になることを確認して下さい。

これで必要なことは全て揃いました。
次の章で最後です。
今まで作った仕組みを使って色んな障害物を作り、ステージを作ってみましょう。

この章のプロジェクトをダウンロード

→分からないことがあれば掲示板で質問して下さい


Portions of this page are modifications based on work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License.

- Remical Soft -