やんごとなき事情があって,embedでQuickTimeを呼び出してJSから制御するってコードを書いていた.*1
さて,音楽プレイヤーなのでミュート機能がある.仕様を簡単に文に起こすと
1. ミュートをオンにしたら音が消える
2. ミュートをオフにしたら,元の音量が復元される
こういう感じになる.
適当にコードを考えると
function SetMute(mute){ if(mute){ save_volume = volume; volume = 0; } else { volume = save_volume; } }
みたいな感じで納得して貰えると思う.でもsave_volumeはかっこわるい.
QuickTime APIでの実装はどうなっているかというと,コードをみたのではないけれどこんな感じ.
function SetMute(mute){ if(mute){ if(volume > -1) return volume = volume * -1; return volume } else { if(volume < 0) return volume = volume * -1; return volume } }
これでsave_volmeとかいう気持ち悪い変数が消える.volumeの値が負の時はmuteだから,GetMute関数も簡単に実装できるし,内部でミュートの状態を管理しなくて良いので,整合性の問題も考えなくて良い.
*1:どうでもいいんだけどGetTime()みたいなのでデータの先頭からの時間とれるんだけど,桁数からミリ秒だとおもってコード書いてたら終了時刻の整合性とれなくてつらかった.