31 using System.Collections.Generic;
58 private double secondsPerFrame;
59 private TimeSpan startTime;
60 private int currentIndex;
61 private int repeatCount = -1;
73 #if !XBOX && !WINDOWS_PHONE 76 internal Image[] frames = null;
83 get {
return frames.Length; }
98 double secondsAdvanced = secondsNow - startTime.TotalSeconds;
99 int currentRepeat = (int)( secondsAdvanced / (
FrameCount * secondsPerFrame ) );
101 if ( currentRepeat > lastRepeat )
104 lastRepeat = currentRepeat;
107 if ( repeatCount >= 0 && currentRepeat >= repeatCount )
124 get {
return 1 / secondsPerFrame; }
128 throw new ArgumentException(
"FPS can not be zero" );
129 secondsPerFrame = 1 / value;
176 private void OnPlayed()
178 if ( Played != null )
Played();
187 if ( frames.Length == 0 )
188 throw new ArgumentException(
"Animation must have at least one frame." );
192 this.frames = frames;
201 if ( image == null )
return null;
213 startTime = src.startTime;
214 currentIndex = src.currentIndex;
215 repeatCount = src.repeatCount;
220 frames[i] = src.frames[i];
233 for (
int i = 0; i < anim.frames.Length; i++ )
235 applied.frames[i] = method(anim.frames[i]);
270 for (
int i = 0; i < anim.frames.Length / 2; i++ )
272 reversed.frames[i] = anim.frames[anim.frames.Length - 1 - i];
273 reversed.frames[anim.frames.Length - 1 - i] = anim.frames[i];
291 public void Start(
int repeatCount )
293 this.repeatCount = repeatCount;
332 public void Step(
int numberOfFrames )
335 currentIndex = currentIndex + numberOfFrames;
340 if ( repeatCount > 0 ) repeatCount--;
342 if ( repeatCount == 0 )
362 #region IEnumerable<Image> Members 366 foreach (
Image frame
in frames )
372 #region IEnumerable Members 374 System.Collections.IEnumerator
System.Collections.IEnumerable.GetEnumerator()
376 return frames.GetEnumerator();
static Image Mirror(Image image)
Peilaa kuvan X-suunnassa.
bool IsPlaying
Onko animaatio käynnissä.
void Step()
Etenee animaatiossa yhden ruudun eteenpäin.
Action Played
Tapahtuma, joka tapahtuu kun animaatio on suoritettu.
Vector Size
Animaation koko. Vector.Zero, jos animaatiossa ei ole yhtään ruutua.
static Animation Reverse(Animation anim)
Palauttaa animaation, joka toistuu lopusta alkuun.
TimeSpan SinceStartOfGame
Aika joka on kulunut pelin alusta.
Image CurrentFrame
Tällä hetkellä näkyvä ruutu animaatiosta.
void Pause()
Keskeyttää animaation toiston.
bool StopOnLastFrame
Jos true, animaatio ei pysähtyessä palaa ensimmäiseen ruutuun.
int Width
Leveys pikseleinä.
static Animation Mirror(Animation anim)
Peilaa animaation X-suunnasssa.
double FPS
Animaation päivitysnopeus ruutuina sekunnissa (frames per second).
void Start(int repeatCount)
Käynnistää animaation alusta.
static Animation Flip(Animation anim)
Peilaa animaation Y-suunnasssa.
Animation(params Image[] frames)
Luo uuden animaation.
Peliluokka reaaliaikaisille peleille.
void Start()
Käynnistää animaation alusta.
Animation(Animation src)
Luo kopion jo tunnetusta animaatiosta.
static Animation Apply(Animation anim, Converter< Image, Image > method)
Käyttää haluttua metodia kaikkiin animaation ruutuihin.
void Stop()
Pysäyttää animaation asettaen sen ensimmäiseen ruutuun.
void Resume()
Jatkaa animaatiota siitä, mihin viimeksi jäätiin.
int Height
Korkeus pikseleinä.
int FrameCount
Ruutujen määrä.
void Step(int numberOfFrames)
Etenee animaatiossa halutun määrän ruutuja. Käytä negatiivisia arvoja, jos haluat kulkea taaksepäin...
Sarja kuvia, jotka vaihtuvat halutulla nopeudella. Yksi animaatio koostuu yhdestä tai useammasta kuva...
static Time Time
Peliaika. Sisältää tiedon siitä, kuinka kauan peliä on pelattu (Time.SinceStartOfGame) ja kuinka kaua...
double Width
Animaation leveys. Nolla, jos animaatiossa ei ole yhtään ruutua.
int CurrentFrameIndex
Aktiivisen animaatioruudun indeksi (alkaa nollasta).
IEnumerator< Image > GetEnumerator()
double Height
Animaation korkeus. Nolla, jos animaatiossa ei ole yhtään ruutua.
static Image Flip(Image image)
Peilaa kuvan Y-suunnassa.