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行で十分です。必要に応じて使ってください(‘ω’)ノ

◎関連記事

▷▷▷enchant.jsでのBGMの再生方法

同カテゴリー記事

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

ボタンを押して決められたパターンに電気をつけるパズルゲーム
あほげー。聖帝シーザーとの一騎打ち。愛の力で巨悪を打ち砕け!
定番ゲームのマインスイーパーです。出てきた数字から爆弾の位置を推測します
あほげー。意味など考えないでください。鶏の気持ちを理解しましょう。

記事の感想・コメント

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

コメントを残す

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

ゲームジャンルタグ

新着技術ブログ記事

新着開発日記