【javascript】setIntervalは実行中に引数を変えてもスピードは変わらない・・・
やっとテトリスの得点を取得することに成功しました。
単純にラインが消える関数の中で count++ ;のように書いて
ラインを消す関数を呼ぶたびに+1する記述をすればよかったのです。
ということで今日書いてて気になった部分に行きたいと思います。
setIntervalの第二因数を動的に
通常setIntervalは第一引数に処理内容、第二引数に時間を設定します。
私が今作っているテトリスでは、0.5秒に一回テトリスの形をした配列を描画する必要があります。
なので
1 const over = setInterval(()=>{
2 // 一マス下に移動する処理
3 // 描画処理
4
5 ,500 )};
このようになります。
次に得点が 3点ごとにスピードアップさせたいのです。したがって
第二引数をspeed(Level)のようにして動的にスピードをあげるようにしました。

ですが結局speed関数のリターンで1.2.3......など数字を返しているものの
テトリスのスピードは変わりませんでした。
調べてみると、どうやらsetIntervalは実行開始したら変更があっても開始時のスピードのままループするのだとか.....
動的に変更できれば簡単でしたのに、、
対策 -- 3ラインが消えるごとにclearInterval() と setInterval()を呼び出す

「止める」「始める」が記述された関数gameStart()

カウントが3の時に上の関数を実行するspeedUp()
これをラインを消去する処理の中で関数を呼び出すと
3の倍数の時に新しい速度のインターバルに上書きされるというわけです。
解決したら少しスッキリました。 次はtone.js 操作かな?
おしまーい!