1

これが私のコードへのリンクです:http://jsbin.com/ebadic/9/edit

これは私がここで見つけたデモからのものです(このリンクはそれがどのように機能するかを説明しています、私が使用している部分は下部にあります):

http://www.html5rocks.com/en/tutorials/casestudies/jamwithchrome-interaction/

6本のギター弦を作成します。私がやりたいのは、6つの弦の1つにマウスを合わせたときにサウンドを再生することです-弦ごとに異なる音、または弦ごとにピッチアップ/ピッチダウンされた単一の音(おそらくplaybackRate属性を使用)

単一の文字列にマウスを合わせると、コードはすでにサウンドを再生しますが、問題は、それぞれに対して同じサウンドを再生することです。弦ごとに異なる音を鳴らすにはどうすればよいですか?

4

1 に答える 1

0

ここに電話strum()します:

Stage.prototype.checkPoint = function(x, y, zone) {
    if(zone.inside(x, y)) {
        zone.string.strum();
    }
};

<audio>ここに識別子を追加してみませんか?再生したい音はx座標とy座標に依存すると思いますか?

Stage.prototype.checkPoint = function(x, y, zone) {
    if(zone.inside(x, y)) {
        zone.string.strum(getAudioID(x, y));
    }
};

どのように記入するかはあなたgetAudioID(x, y)次第です(私はミュージシャンではないので、本当にわかりません:))

もちろん、strum()メソッドも次のように変更する必要があります。

GuitarString.prototype.strum = function(audioID) {
    this._strumForce = 5;
    document.getElementById(audioID).play();
};

(ここまでは、現在のデザインにうまく適合します。)


より良いアプローチは、ギターの弦オブジェクトをインスタンス化するときにクラスにaudioIDを追加することです。GuitarStringしたがって、各ギターストリング(オブジェクト)は独自のオーディオトラックを使用します。

これにはコードにさらに大きな変更が必要になりますが、コードが非常に明確で理解しやすいものになるため、この方法で行うことをお勧めします。


また、JavaScript / HTML5の効果音をチェックアウトして、-タグを使用せずにオーディオトラックを再生する方法を示します<audio>。これは、オーディオフラグメントが多い場合に特に便利です。

于 2012-12-17T10:19:45.640 に答える