Akashic Engine 逆引きリファレンス

定期的に処理を実行する

定期的に処理を行う場合は、scene.setInterval() を利用します。

凡例

scene.setInterval(function() {
  // 1 秒ごとに行う処理
}, 1000);

一定時間後に処理を実行する場合は scene.setTimeout() を利用してください。

利用例

次のコンテンツは、表示されている矩形の色が 1 秒毎にランダムで変わります。

詳細

scene.setInterval() ではミリ秒単位で時間を指定できますが、実際にはフレーム単位で処理が行われます。例えばゲームが 30 FPS、つまり 1 秒間に 30 フレーム描画している場合、1 フレームの長さは約 33 ミリ秒なので、実際の処理時間は 33 ミリ秒単位に切り上げられます。 scene.setInterval() に登録した関数は scene.clearInterval() で登録を解除できます。

var intervalId = scene.setInterval(function() {
  // 1 秒毎に行う処理
}, 1000);

scene.clearInterval(intervalId); // scene.setIntervalで作成した定期処理を解除

scene.setInterval() ではない、グローバルの setInterval() や、同じくグローバルの setTimeout() は使用しないよう注意してください。 これは、Aksahic Engine のコンテンツは、現実の時間とは違う速度で実行されることがあるためです (例えば、Akashic Engine のゲームは、ニコニコ生放送上で実行されることがあります。その場合、タイムシフトではシークバーに連動する形で動作します)。この時、 scene.setInterval() は実行速度を踏まえて経過時間を処理するのですが、 グローバルの setInterval() は指定した時間そのままの時間経過で処理するため、処理の実行タイミングがずれてしまうことがあり得ます。

関連情報