不要な要素はちゃんと削除しよう【enchant.js】

enchant.jsでは画面に追加した要素はプログラムの変数とは別の存在になっているようで、削除の手続きをしてあげないと消えないようです。少量だと問題ないですが多くなると実行処理の負担になってたりします。なので不要になったものはきちんと削除してあげましょう。

とはいえ、例えば敵キャラを倒したりするたびにそのキャラの要素を削除する必要はないです。敵キャラなどは状態を「死」にしておいて画面外に放りだしておけばOKです。要素を削除したり新たに生成するのは結構負担が大きいようなのでメインループ内では基本使わない方が良いと思います。

要素の削除で重要なのはシーンの切り替え時です。

シーンの切り替え時に全部消す

例えば会話シーンなどを作ってゲーム画面に出した後にその要素をちゃんと削除せずにいるとずっとその要素は残り続けます。そしてまた別の会話シーンで要素を生成して、また別の会話シーンで・・とやっていると使った要素が蓄積されてそのうち処理が重くなってきます。

なのでシーン切り替えの時はいらなくなったシーンをしっかり削除しましょう。

function removeScene(scene){
    while(scene.firstChild){
        scene.removeChild(scene.firstChild);
    }
}

上記の関数をシーンを切り替える際に消したいシーンを引数にして呼び出してやります。これでシーン内の子要素はすべて削除できます。

こんな感じでシーン切り替えの際にシーンの子要素をすべて削除してやればきれいさっぱり消えてなくなってくれます。

※実はGameオブジェクトにもremoveSceneというメソッドがあるんですが、これがどうもちゃんと要素を消してくれないんですよね(;´Д`)

同カテゴリー記事

当サイトのオリジナルゲーム(ランダム表示)

障害物に当たらないようにタイミングを狙って弾を撃つゲーム。
壁や自分の体に当たらないように餌を食べて蛇を大きくするゲーム。
同色で複数隣り合っているタイルをタッチするとそのタイルのところに他のタイルが集まります...
同色のブロックを4つ以上つなげると消える落ちもの系パズルゲームです。連鎖で高得点を狙おう!

記事の感想・コメント

※コメントはまだありません※

コメントを残す

メールアドレスが公開されることはありません。

ゲームジャンルタグ

新着技術ブログ記事

新着開発日記