ロード画面を好きなように改造する【enchant.js】
enchant.jsのゲームを起動すると一番最初に表示される画面。このバーが満たされていくことでロード状況を教えてくれるわけですが、何もない画面にこれだとなんか寂しいので改造してみましょう。
ちなみにこれはオリジナルゲーム.comさんの記事を読んだのがきっかけです。
この記事ではloadSceneを作ってgameオブジェクトのloadingSceneに入れているんですが、それならenchant.jsの中身のloadingSceneを直接いじってやろうじゃねぇか!!となった、ということです(*´ω`)
loadingSceneの中身
enchant.js内のloadingSceneの中身がこちら。
enchant.LoadingScene = enchant.Class.create(enchant.Scene, { initialize: function() { enchant.Scene.call(this); this.backgroundColor = '#000'; var barWidth = this.width * 0.4 | 0; var barHeight = this.width * 0.05 | 0; var border = barWidth * 0.03 | 0; var bar = new enchant.Sprite(barWidth, barHeight); bar.disableCollection(); bar.x = (this.width - barWidth) / 2; bar.y = (this.height - barHeight) / 2; var image = new enchant.Surface(barWidth, barHeight); image.context.fillStyle = '#fff'; image.context.fillRect(0, 0, barWidth, barHeight); image.context.fillStyle = '#000'; image.context.fillRect(border, border, barWidth - border * 2, barHeight - border * 2); bar.image = image; var progress = 0, _progress = 0; this.addEventListener('progress', function(e) { // avoid #167 https://github.com/wise9/enchant.js/issues/177 progress = e.loaded / e.total * 1.0; }); bar.addEventListener('enterframe', function() { _progress *= 0.9; _progress += progress * 0.1; image.context.fillStyle = '#fff'; image.context.fillRect(border, 0, (barWidth - border * 2) * _progress, barHeight); }); this.addChild(bar); this.addEventListener('load', function(e) { var core = enchant.Core.instance; core.removeScene(core.loadingScene); core.dispatchEvent(e); }); } });
なんとこの部分はjavascriptそのものではなく我々が慣れ親しんだenchant.jsのスタイルで書かれています!!これなら改造し放題!!(・∀・)
と、行きたいところですが、ここでは画像や音楽は使えません。だってロード前だから。読み込み状況を知らせてくれる画面だから。。(´;ω;`)
と、諦める必要はなくて、画像を出したいならここで必要な画像だけ先に読み込んでしまえばOKってことです。まぁその方法はオリジナルゲーム.comさんの記事を読んでくださいな(‘ω’)ノ
ちなみに私はこんな感じに作りました。
ラベルを追加して読み込み状況のバーの太さを変えました。barwidth、barHeight、borderあたりの値を変えてやれば簡単にできますよ(‘ω’)ノ
同カテゴリー記事
記事の感想・コメント
※コメントはまだありません※