時間間隔を追跡し、間隔が経過するたびに関数を呼び出す必要があります。に関する SDL のドキュメントを参照しましたSDL_AddTimer
が、gcc は私のやり方が間違っていると不平を言っています。
では、どのように定期的な間隔を作ることができますか、またはどのように使用しAddTimer
ますか?
SDL ドキュメントの例はAddTimer
、私には明確ではありませんでした。gcc は、コールバック関数に引数がなく、タイマーがスコープに存在しないことを教えてくれました (ただし、何を宣言すればよいかわかりません)。これが私がひどく試したことです:
SDL_AddTimer(3000,changeMusic,NULL);
Uint32 changeMusic(Uint32 interval, void *param){...
経過時間が 3 秒で割り切れる場合は関数が実行されるのではないかと思ったのですが、これは不規則な頻度でアクティブ化されました。
if(interval.getTicks()%3000==0){
changeMusic();
}
または、カウントダウンがゼロになった場合は、リセットして関数を呼び出しますが、カウントダウンするタイマーを作成する方法がわかりません。
//something like this
cdTimer=(3000 to 0)
if(cdTimer==0){
cdTimer=(3000 to 0);
changeMusic();
}