メトロノーム一段落
先日、d:id:imait:20090622のAcitonScriptで作るメトロノームは、結局スレッドは使わず、相変わらずsetInterval()に頼ることにしました。けれど今回は、1ミリ秒ごとに時刻を確認する関数を呼び出し、それでタイミングをはかってメトロノームのクリック音を鳴らすという方法をとりました。
多分、今の自分にはこれがベストかと思います。一応、trace()で期待されるクリック発音タイミングと、実際に鳴った時刻の差を出力させてみたところ、誤差は1/100秒以下におさえられてる、みたいです。
とりあえず、次になにかをするとしたら、メトロノームのクラスを作る、かな? わりとクラスで表現しやすいように思います。インスタンスを作って、start()メソッドで動かして、stop()メソッドで止める、ってところですかね? まあ難しくはないと思います。
でも、これは、パブリッシュしてしまったら変化がわからんよね。なんともはや。
function playUnTan() { if (i % time == 0) { seUn.play(); i = 0; } else { seTan.play(); } i++; } var current_time = getTimer(); var next_time = getTimer() + tempo; function checkTime() { current_time = getTimer(); if (current_time > next_time) { playUnTan(); next_time = next_time + tempo; } } intId = setInterval(checkTime, 1);
一部抜粋すると、こんな感じです。