2023-09-08
TimerComponent を使うと、一定時間ごとに処理を繰り返したり、一定時間後に処理を実行したりできます。
公式ドキュメント https://docs.flame-engine.org/latest/flame/other/util.html#timerTimer.periodic
やFuture.delayed
と同じ機能に見えますが、違いがあります。
内部実装を見ると、Flame のライフサイクルに合わせて処理されるようになっているので、ポーズの際に止まるなどのメリットがあります。
基本的にはこちらを使う方がよいでしょう。
TimerComponent
を使ってみます。
秒数をperiod
に、処理をonTick
にしています。
まずは繰り返しです。ここでは 1 秒ごとにカウントアップしています。
繰り返すにはrepeat: true
を指定します。
await add(
TimerComponent(
period: 1.0,
repeat: true,
onTick: () => _count++,
),
);
次に一定時間後に一度だけ処理します。ここではボタンをランダムに動かして、0.5 秒後に停止しています。
この場合はrepeat: true
は不要です。
処理し終わったらもう不要になるので removeOnFinish: true
を指定する方がよいでしょう。
_onPressed() {
_vx = (_random.nextBool() ? 1 : -1) * 50;
_vy = (_random.nextBool() ? 1 : -1) * 50;
add(
TimerComponent(
period: 0.5,
onTick: () {
_vx = 0;
_vy = 0;
},
removeOnFinish: true,
),
);
}
このようにしてタイマーが使えます。
© 2023 tnantoka