画面に画像を描画するプログラムがあります。ここでの描画関数は、描画コードがすべて含まれているフレームごとに呼び出されます。
画像のインデックスからそれぞれの画像を返す画像シーケンサーを作成しました。
void draw()
{
sequence.getFrameForTime(getCurrentElapsedTime()).draw(0,0); //get current time returns time in float and startson application start
}
キーを押すと、最初の画像 [0] からシーケンスを開始し、さらに続けます。そのため、キーを押すたびに、基本的に currentTime%numImages を使用してフレームを取得する上記のコードとは異なり、[0] から開始する必要があります (これは画像の開始位置 0 ではありません)。
基本的にキーを押すたびにトリガーできる独自のタイマーを作成して、時間が常に0から始まるようにすることを考えていました。
編集
なぜカウンターだけを使わなかったのですか? ImageSequence でもフレームレートを調整しています。
Image getFrameAtPercent(float rate)
{
float totalTime = sequence.size() / frameRate;
float percent = time / totalTime;
return setFrameAtPercent(percent);
}
int getFrameIndexAtPercent(float percent){
if (percent < 0.0 || percent > 1.0) percent -= floor(percent);
return MIN((int)(percent*sequence.size()), sequence.size()-1);
}