タイトルで述べたように、私は、HTML <audio />
タグとともにjQuery/JavaScriptベースのメトロノームを作成しようとしています。HTML5/jQueryのメトロノーム - パフォーマンスの問題
「大丈夫ですが、私にはsetInterval
メソッドが十分正確に動作していないようです。私はここでいくつかのスレッドを検索しましたが、私はjQueryとJavaScriptの両方が新しく、実用的なソリューションを見つけられませんでした。 "open new tab and setInterval stopsまたはlags"と同じですが、問題です。私はstop(true,true)
でそれを防止しようとしましたが、期待通りに動作しませんでした。
新しいタブを開いて何かをやっているときに、テンポを変えずにメトロノームを「バックグラウンドで」走らせたいです。また、私は確かに、正確なメトロノームをしたい。
はここにある私のテスト環境です):現時点でhttp://nie-wieder.net/metronom/test.html
あなたがそこに見ることができるので、JS-コードとHTMLマークアップは、test.htmlというソースですべてです。
はまた、ここで私が使用して心配(と思うよう)JS-コードは次のとおりです。
$(document).ready(function() {
//vars
var intervalReference = 0;
var currentCount = 1;
var countIncrement = .5;
var smin = 10;
var smax =240;
var svalue = 120;
//soundchkbox
$(".sndchck").attr("disabled", true);
//preload sound
$.ajax({
url: "snd/tick.ogg",
success: function() {
$(".sndchck").removeAttr("disabled");
}
});
// tick event
var met = $("#bpm").slider({
value: 120,
min: smin,
max: smax,
step: 1,
change: function(event, ui) {
var delay = (1000*60/ui.value)/2
clearInterval(intervalReference);
//seems to be the Problem for me
intervalReference = setInterval(function(){
var $cur_sd = $('#sub_div_'+currentCount);
$cur_sd
.stop(true,true)
.animate({opacity: 1},15,
function() {
//Play HTML5 Sound
if($('#sound_check:checked').val()){
$('#tick')
.stop(true,true)
.trigger("play");
}
$(this).
stop(true,true).
animate({opacity:0});
}
);
currentCount += countIncrement;
if(currentCount > 4.5) currentCount = 1
}, delay);
createMusicTag(ui);
}
});
});
すべてのヘルプは素晴らしいことだ、私は今のアイデアをよ。
まず、あなたの非常に迅速な回答に感謝します。あなたのアプローチが私のために働くかどうかを調べるために、あなたのフィドルをここで更新しました:http://jsfiddle.net/ping/UqbwT/3/それは私のMacBook(firefox 11)ではないと思われます。それとも、時間がたってから遅れを見ているのですか? (ダニは> 600または> 700をしばらく表示します)。 – Dominik
が実装上の問題である可能性があります。基本的にこの考えはまだ成立しています。ブラウザのタイミング機能に頼ることはできません。彼らは正確ではなく、あなたは**偏見を見ます**。代わりに、バックグラウンドで実際の日時を見て定数ループを実行し、それを使って秒が経過したかどうかを判断したいとします。 – rlemon
エイ、あなたは正しいです、今までのあなたの答えに感謝します。私はあなたの解決策に進み、 "もっと"を望む人々のためにjava-appか何かを作成するつもりだと思う)とてもありがとう。少なくともあなたは正しいです、それは実装上の問題です、そして、私はそれについてもっと多くはできないと思います。 – Dominik