Ciao a tutti,
sto continuando il mio progetto in DirectX...
praticamente sto creando un sistema per creare sprites animate..
La classe degli sprite animati è questa:
Io adesso dovrei fare in modo che passato tot tempo il valore FrameID aumenti...in modo da passare alla seconda immagine..per fare cio' ho fatto questo:codice:public string AnimationName = null; // nome animazione public int FrameID = 0; // Frame selezionato public int[] FrameDuration; // Durata di ogni frame public SpriteFlags flag = SpriteFlags.AlphaBlend; public Sprite Frame; // Frame visualizzato public Texture[] textureSequence; // sequenza dei frame public int[] XY_Position = { 0, 0 }; public int AnimationSpeed = 1; // velocità animazione
Quello che dovrebbe fare questa funzione è questo:codice:public static void playAnimation(SpriteAnimation s_anim) { int time = 0; while (time <= s_anim.FrameDuration[s_anim.FrameID]) { Console.WriteLine(time.ToString() + "/" + s_anim.FrameDuration[0]); time = time + s_anim.AnimationSpeed; if (time >= s_anim.FrameDuration[s_anim.FrameID]) { s_anim.FrameID++; time = 0; } } }
mentre (variabile tempo è minore o uguale alla variabile DurataFrame[frame selezionato])
aumenta la variabile tempo.
Se la variabile tempo corrisponde alla durata massima del frame selezionato allora:
-passa al frame successivo
-resetta il contatore del tempo
Non capisco perchè non funzioni...praticamente mi salta il secondo frame e va direttamente all'ultimo..

Rispondi quotando