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:

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
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 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;
                }
            }
        }
Quello che dovrebbe fare questa funzione è questo:


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..