忍者ブログ

Motquu Blog - モトクー ブログ

HTML5のゲームを置いてます。3つほどに増えました。

[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Phaser3でファイル読み込みのプログレスバーを実装してみた
やり方がわからなかったので、レベル99の杖のゲーム開始時のファイル読み待ちの間じゅう"Loading..."の文字が表示されているだけだったのだけれど、Phaserのサイトをよく読むとちゃんと簡単にプログレスバーが付けられることが分かったのでやってみた。

こんな感じ。



それらしくなった。かっこいい!
非常に簡単にできる。詳しくはここに書いてあった。ただし英語。
Creating a Preloading Screen in Phaser 3(Phaser3でローディング画面を作る)
英語がにがてなのでしばらく見逃してた。

Phaser3では、preload関数内でファイルを個々に読み込むようになってる。そして、読み込みが終わるとcreate関数が呼ばれる。以前ファイルを数えて割合を出してなどと自前でやって失敗した。preloadのファイル読み込みが一瞬で終わるのに、createの前で長く待たされてしまう。preloadのファイル読み込みの間に処理を挟むことはできないのでした。

正しい方法は、this.load.on('progress', function (value) {} のようなリスナーを実装するやり方でした。

  1. function preload() {
  2.     //
  3.     //ここら辺でGraphicなどの描画オブジェクトを準備しておく
  4.     //
  5.     this.load.on('progress', function (value) {
  6.     //リソースが一つ読み込まれるごとにこれが呼ばれるので
  7.     //ここで描画処理をする
  8.     //valueは0.0(未完了)から 0.1 , 0.5 , 0.9 , 1(完了)のように経過を表す値が入ってくる     
  9.       console.log(value);//試しにコンソールに出力してみる
  10.     });
  11.     this.load.on('fileprogress', function (file) {
  12.     //file.src でファイル名が取得できる
  13.       console.log(file.src);//試しにコンソールに出力してみる
  14.     });
  15.     this.load.on('complete', function () {
  16.     //完了時に呼ばれる
  17.      console.log('complete');//試しにコンソールに出力してみる
  18.     });
  19.  //
  20.  //ここら辺にリソースの読み込みを記述する
  21.  //
  22.  // this.load.image('image1', 'img/image1.png');
  23.  // this.load.image('image2', 'img/image2.png');
  24.  // ...    のような感じ
  25.  
  26.   }
  27.   function create() {
  28.   }
  29.   function update() {
  30.   }

このようにすると、適切なタイミングで経過の更新を呼び出してくれるのでした。
PR

コメント

コメントを書く