javascriptで正確なタイミング範囲

私はSoundmanager2ライブラリを使ってhtml5サウンドフェーダーウィジェットに取り組んでいますが、15秒間に0-100の範囲で補間する変数を設定する必要がありますが、最初は15秒以上、それ以下の時間はかかります後の時間。その不一致は私をナットにしている。

my JS is here: http://wesww.com/nic/peasoup9/js/soundfader.js

コード: 私は15秒の持続時間を設定しています:

function fadeOutSound(soundObject) {
    var fadeLengthInSeconds = 15;

ここで数学をやっています:

if(soundObject.volume < maximumVolume) {
    var progressRatio = deltaTime/soundObject.fadeLength;
    var actualProgress = progressRatio * maximumVolume;
    soundObject.setVolume( soundObject.volume + actualProgress );

お手数ですがありがとうございます。情報を追加してコードを明確にすることができれば教えてください

Edit: I ended up going with a self-adjusting timer, such as this: http://www.sitepoint.com/creating-accurate-timers-in-javascript/

2
フロートとしてキャストしてみてください。あるいは、単に15の代わりに var fade_length_in_seconds = 15.0 のようなものを試してみてください。
追加された 著者 Benjamin Tan Wei Hao,
これは既知の問題です.100ms未満のsetTimeout遅延は、関数の実行時間の影響を受けます。異なるブラウザでこのリンクを開き、その違いを確認してください。
追加された 著者 Diode,
OK、傷つけることはできませんでした。それは素早い考えです...
追加された 著者 wesww,
それで、実際にはChromeを使用したほうがいいです。今はFirefoxに夢中になる。 whyyyyyyy。しかし、ありがとう!私は変わったことに驚いている
追加された 著者 wesww,

2 答え

あなたは部門を見たいかもしれません。 私はこのようなエラーが疑われている:

10/3 = 3

すべての数値は整数にキャストされます。

0
追加された
ChromeとFirefoxでjavascriptの計算が異なるのですか? Benjamin Tanの15から15.0への単純な変更の提案は、Chromeの不整合問題を実際に解決しましたが、Firefoxではこれとはほとんど矛盾しています
追加された 著者 wesww,
これは型キャストではありません。これは単に整数除算です。ただし、JavaScriptでは 10/3 = 3.33333333333333333 になります。
追加された 著者 Michael Mior,

JavaScript内のすべての数値は、定義上、64ビット浮動小数点数です。しかし、さまざまなJavaScriptエンジンは、可能であれば、通常はよりシンプルな数値形式に型キャストします(少なくともV8ではこれが有効です)。

私はそれを自分で演奏していませんが、型付き配列は現在、数学はより大きなスケールで実行されます。しかし、それは "現代の"ブラウザでしか動作しません。

0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript