フレームプロパティにある「タイマーベース動作」についてようやく分かってきたので改めてまとめ直します。
「タイマーベース動作」はオブジェクトをタイマーベース(タイマー依存)で動作させるようにして、アプリケーションのフレームレートが変動しても、オブジェクトの動作速度を「タイマーベース動作」で設定したレートで移動した時の速度に維持する機能です。
(「タイマーベース動作」のレートよりアプリのフレームレートが低くなった場合は、移動量を増やして、逆にアプリのフレームレートが「タイマーベース動作」のレートより高い場合は移動量を減らして遅くする。)
以下のサンプルを確認してください。
アプリケーションの「フレームレート」を50に設定。
フレームの「タイマーベース動作」をONにして設定値は同じく50に設定。
まずはこの状態で実行して、オブジェクトが右端に移動した時のフレームカウントとストップウォッチの値を覚えておきましょう。
次に、アプリケーションのフレームレートを半分の25に変更して実行してみてください(タイマーベースの設定はそのまま)。
2つの結果を比べてみると、フレームカウントはフレームレートの変更に伴って増加量が減っていますが、タイマーベースの経過時間であるストップウォッチの値は、どちらも同じ値で止まったはずです。
似た機能にアプリケーションプロパティの「マシン速度に依存しない」というオプションがありますが、これとの違いは、
こちらは処理落ちを起こしてフレームレートが下がった時にアニメーションや動作の滑らかさを犠牲にして「フレームレートを稼ぐ」機能ですが、
一方の「タイマーベース動作」は「フレームレートは稼がずにオブジェクトの動作のみを合わせる」機能です。
このため、イベントにフレームベースで動作するイベント(例:常に実行で変数を増加させ、その変数が一定値になったら実行されるイベント等)が含まれていると、フレームカウントの間隔は処理落ちで下がっているのに、オブジェクトの動作速度はタイマーベースとなって変わらないので(タイマーは処理落ちに関係がない)、この差によって進行に大きな影響を及ぼす恐れがあります。
逆に、フレームベースのイベントが一切使われていなくて、全てタイマーで制御されている場合は、処理落ちをしてもタイミングがフルフレームで動作した時と変わらないようにすることが出来ます。
しかし、全てのイベントをタイマーベースにするのは現実的に難しいと思いますので、やはり今まで言われてきた通り、「タイマーベース動作」はOFFにしてフレームベースで作った方が余計な混乱が生じなくて良いと思います。