2014.09.08   |   Javascript

enchant.jsでゲーム終了後リトライ機能をつける

ゲーム終了後に再度遊べるようにするリトライ機能の実装方法について。

公式のドキュメントに記載がないので
location.reload()
で読み込みをリセットしていたのですが、
画面が反転する、リロードに時間がかかるなど
あまりいいやり方ではないので解決策を探してました。

proper way to restart? #249

You can create the new scene that provides game rules on each restarting.
For example,

function createGameScene() {
    var scene = new Scene();
    return scene;
}

// call when you need restarting
function restart(core) {
    core.replaceScene(createGameScene());
}

core.onload = function() {
    restart(this);
};

onloadの部分を加工してあげて、
毎回シーンのクロージャをcreateGameSceneで
生成してあげるようにすれば簡単にリロードが実装できるみたいです。

リスタートボタンを作ってその中でrestart(core)してあげるだけです。
(他のドキュメントに合わせるならcoreをgameに読み替えます)

こうすることでグローバルに依存した変数とかがなければ
まっさらな状態でスムーズにゲームをリセット出来るようになります。