AS3 で 60fps のフレーム レートに依存しないモーションを実現するのに問題があります。フレームごとに、前のフレームからの時間を測定し、それをアキュムレータに追加します。アキュムレータが目標時間 (16.666 ミリ秒 (60 fps)) よりも大きい場合、フレームがシミュレートされます。
問題は、AS3 getTimer() がミリ秒単位の時間を返すだけであることです。
私が取得するデルタ時間は、多くの場合、最初のフレームで 16 ミリ秒、2 番目のフレームで 16 ミリ秒、3 番目のフレームで 18 ミリ秒であり、このパターンが繰り返されます。これは平均して 16.666 になります。しかし、最初のフレームではターゲット時間 (16 < 16.666) よりも低いため、フレームはシミュレートされません。2 番目のフレームでは、アキュムレータはターゲット時間よりも高くなりますが、2 倍よりわずかに少ないため、1 フレームがシミュレートされます。3 番目のフレームでは、18 ミリ秒でアキュムレータがターゲット時間の 2 倍にプッシュされるため、2 つのフレームがシミュレートされます。
そのため、フレームがレンダリングされず、次に 1 つ、次に 2 つ、次に何もレンダリングされず、次に 1 つ、次に 2 つという非常にぎくしゃくした動きが得られます。
どうすればこれを回避できますか?