Akashic Engine 逆引きリファレンス

一定時間後に処理を実行する

一定時間後に処理を行う場合は、scene.setTimeout() を利用します。

凡例

scene.setTimeout(function() {
  // 3秒後に行う処理
}, 3000);

一定時間ごとに繰り返し処理をする場合は scene.setInterval() を利用してください。

利用例

次のコンテンツは、表示されている矩形が 5 秒後に非表示になります。

詳細

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

var timerId = scene.setTimeout(function() {
  // 5秒後に行う処理
}, 5000);

scene.clearTimeout(timerId); // scene.setTimeoutで登録した処理を解除

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

関連情報