Sto programmando un piccolo Music Engine per il mio gioco in C # e XNA, e un aspetto da esso è la possibilità di riprodurre in loop una sezione di una canzone. Ad esempio, la mia canzone ha un'intropart e quando la canzone ha raggiunto la fine (o qualsiasi altro punto specifico), torna indietro dove l'intropart è appena finito. (A - B - B - B ...)
Ora sto usando IrrKlank, che funziona perfettamente, senza lacune, ma ho un problema:
Il punto in cui tornare indietro è un po 'impreciso. Ecco qualche esempio di codice:
public bool Passed(float time)
{
if ( PlayPosition >= time )
return true;
return false;
}
//somewhere else
if( song.Passed( 10.0f ) )
song.JumpTo( 5.0f );
Ora il problema è che la canzone passa i 10 secondi, ma suona alcuni millisecondi fino a 10,1 o giù di lì, quindi passa a 5 secondi. Non è così drammatico, ma molto errato per le mie esigenze. Ho provato a risolverlo in questo modo:
public bool Passed( float time )
{
if( PlayPosition + 3 * dt >= time && PlayPosition <= time )
return true;
return false;
}
(dt è il tempo delta, il tempo trascorso dall'ultimo fotogramma)
Ma non credo, questa è una buona soluzione per questo.
Spero che tu possa capire il mio problema (e il mio inglese, yay / o /) e aiutarmi :)