3

ユーザーがボタンをクリックするたびに拍手音を使用する Javascript ベースのアプリを開発しています。ユーザーがボタンをクリックするとすぐにサウンドが再生される必要があります (遅延があってはなりません)。audacity を使用してサウンドを録音し、wav 形式で保存しました。最初は拍手音の前にラグがあり、ボタンをクリックすると音がはっきりと聞こえましたが、前述のように音の前にラグがあるため少し遅れました(下の写真で確認できます)。

ラグ削除前のwav音

ユーザーがボタンを押すとすぐに音を聞いてもらいたいので、音の前のラグには興味がありません。そこで、以下に示すように、大胆に拍手する前のラグを取り除きました。

拍手前のラグを取り除いてから

サウンドは再びwav形式で保存され、audaciousとwinampで再生するとサウンドがはっきりと聞こえます。しかし、ブラウザでアプリを開いたときにアプリのボタンをクリックすると、拍手音がまったく聞こえないかのように非常に穏やかになりました。問題がファイル形式に関連しているのか、JavaScript に関連しているのかわからないので、本当に混乱しています。JavaScriptを使用してボタンをクリックするとすぐに音をはっきりと再生する方法はありますか?

【更新部分】

本当にごめんなさい。コードにバグがありました。オーディオの初期時間を 0.05 に設定すると、問題が発生しました。

tapSound.currentTime=0.05;
tapSound.play();

音ははっきりと聞こえるようになりましたが、ボタンをクリックするたびに音が出るまでにまだラグがあります。

これは私が持っているJavaScriptコードです

var tapSound=new Audio();
tapSound.src="sounds/tap.wav";
tapSound.preload='auto';
$(".refresh, .backspace, .home, .pause, .about, .backbutton").on('click',function () {
tapSound.currentTime=0.01;
tapSound.play();
});
4

1 に答える 1

3

Audio オブジェクトの preload プロパティを「auto」に設定する必要があります。

var audio = new Audio();
audio.src = "yourfile";
audio.preload = 'auto';

このコードは、ボタンをクリックしたときではなく、ページをロードしたときに実行する必要があります。ボタンをクリックしたら、オーディオ オブジェクトの play() メソッドを呼び出すだけです。

于 2015-08-02T15:47:11.137 に答える