音量調整機能
音量調節機能を作ったらバグりました。
JavaScriptで実数の計算をするとこの様な誤差が生じるらしいです。
C++でもPythonではなかったことなので、最初見た時は何これ?って感じでした。
色々試した結果、このようにすれば誤差が出なくなりました。
//BGMボリュームを上げるボタンの動作 this.upMusicVolumeButton.onpointend = function(){ var musicVolume = (Number(Math.round(SoundManager.musicVolume * 100)) + 1) / 100; SoundManager.setVolumeMusic(musicVolume); self.musicVolumeNumLabel.text = String(Math.round(SoundManager.musicVolume * 100)); }
整数に直して計算すれば誤差はでません。
実数を整数に直す際に100を掛けてますが、この時既に誤差が生じるので四捨五入して誤差を丸め込みます。そのうえでNumberで整数にして計算させます。
JavaScriptで実数を使う時点で誤差が出るのは避けては通れないようです。
この間の記事についての訂正とお詫び
もう削除してしまいましたが「phina.jsで音量調整する際の注意点」という記事をこの前書きました。
あの記事で「一度音楽を流したら、途中で音量調整は出来ない」と書きましたが、間違いでした。
今回、音量調節機能を作った際に、再生中の音源の音量を変更できることが確認できました。
お詫びして訂正いたします。