enchant.jsで効果音を鳴らす
enchant.jsでは音を鳴らす基本的な方法はこんな感じになってます。
var sound = core.assets['bomb.mp3'].clone(); sound.play();
これで音が鳴ります。clone()は複製する処理で、なくても音は鳴らせますが同じ音を重ねて鳴らすことができません。
音を鳴らしたい場所に上の2行を書けばいくらでも音を鳴らせるんですが、同じ音を鳴らすならデータの引き当ては一回で済ませたいところです。
ということで、以下のようなクラスを作ってみました。
var SoundEffect = enchant.Class.create({ //ファイルセット関数(引数:ファイル、オブジェクト作成数(※必ず1以上)) set: function(data, max){ this.sound = [];//サウンドオブジェクト保存用 this.count = 0;//カウント用初期化 this.max = max;//同時再生最大数 for(var i = 0; i < this.max; i++){ this.sound[i] = data.clone(); } }, //再生関数(クローンを順繰りに再生) play: function(){ this.sound[this.count++].play(); if(this.count >= this.max){ this.count = 0; } } });
set()で引数に音楽データとともに同時再生数の限度数も渡します。これで必要な数のクローンを先に作ってしまいます。
再生時は順繰りにデータを再生します。しかし、同時再生数が最大数になるとそれ以上再生できなくなり、鳴っている音が消えて再生可能な空きが出るまで次の再生が始まりません。
クローンを作る数は敵キャラの爆発など同時再生が多発するものは多く、あまり同時に発生しない効果音は少な目に作ると良いと思います。
ただし、一度再生するだけなら一番最初に説明した2行で十分です。必要に応じて使ってください(‘ω’)ノ
◎関連記事
同カテゴリー記事
記事の感想・コメント
※コメントはまだありません※