さて、前回の記事ではゲーム内タイマーを作りました。
Power Apps でゲーム作成をして学んだノウハウ -1- ゲーム内タイマーを作ろう
今回はこのタイマーを利用して、一定間隔で何かの処理を行う方法についてです。
#切り替えコントロールを活用しよう
スライダーコントロールを利用したゲーム内タイマーを利用して一定間隔で処理を実行しようと思ったとき、実装方法のひとつとしてはスライダーコントロールの「OnChange」を利用する方法があります。
処理のパターンが少ない場合はそちらの方法でも良いと思うのですが、ゲームのように様々な処理が必要になる場合には「切り替え」コントロールを利用するのがオススメです。
理由は、Power Apps ではステップ実行などのデバッグ手段が用意されていないため、動作の様子を出来るだけ目で見て確認できるように作成しておくことで作業効率を大幅に向上させることができるからです。
##切り替えコントロールの動作を理解しよう
切り替えコントロールの動作は単純です。「Default」プロパティに指定した条件式が「true」のときは「Check」状態となり、「false」のときは「Uncheck」状態となります。
そして、状態が変化したとき「OnChange」、変化した結果 Check 状態になったとき「OnCheck」、変化した結果 Uncheck 状態になったとき「OnUncheck」に指定している処理が実行されます。
##一定間隔で処理を実行するには
この動作を理解した上で、ゲーム内タイマーを利用して一定間隔で処理を実行するには「Default」プロパティに指定する条件式が重要になります。
たとえば今回作成しているゲーム内タイマーは 1 秒間に 20 ずつ増加するものですので、20 増えるたびに Check 状態に切り替えてあげれば良いわけです。そのためには、次のような条件式を Default に指定します。
Mod(GameTimer.Value,20)=0
「GameTimer」は、ゲーム内タイマーとして作成したスライダーコントロールの名前です。そのコントロールの値を Mod 関数を利用して 20 で割った余り(余剰)を求め、余剰が 0 となった時に true となるように条件式を指定します。(余剰は 0 から 19 の間で順に変化し、ループしています)
この割る数字をもっと小さくするればより高頻度で処理が実行され、もっと大きくすればより低頻度で処理が実行されることになります。
あとは、この間隔で実行したい処理を「OnCheck」プロパティに書いておくだけです。
#まとめ
ゲーム内タイマーを利用して、一定間隔で処理を実行するには「切り替え」コントロールを利用するのがオススメです。Power Apps では、ステップ実行などのデバッグ手段が用意されていないため、出来る限り動作している様子を目で見て確認できるように作成しておくことで作成時の効率が大幅に向上します。
条件式を工夫することで、もっと複雑なタイミングでの処理の実行もできるようになります。