Also so in der Art habe ich das umgesetzt...
Beim Laden gebe ich ja Animations-Framegröße und -anzahl mit. Wenn also z.B. der Asteroid einmal so und einmal so aussehen soll brauch ich
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//Init in game.cpp
CSprite pSprAsteroid = new CSprite;
pSprAsteroid->Load("ast1.bmp",10,22,22);
pSprAsteroid->SetColorKey(0,0,0);
CSprite pSprAsteroid2 = new CSprite;
pSprAsteroid2->Load("ast2.bmp",10,22,22);
pSprAsteroid2->SetColorKey(0,0,0);
//sonstiges...
//Und die werden beide jedem Asteroid übergeben
CAsteroid(pSprAsteroid,pSprAsteroid2, ... );
|
Dann muss der Asteroid irgendwo was haben, was festhält welche Animation gerendert werden soll:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
|
private: bool m_bAnim2On; //Init nicht vergessen
//Und außerdem auch bei Init
m_Rect = m_pSprite1->GetRect();
//Und irgendwo das hier
m_bAnim2On = true;
m_Rect = m_pSprite2->GetRect();
|
Und dann schließlich
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
|
void CAsteroid::Render() {
if(!m_bAnim2On) {
m_pSprite1->Render(m_fAnimPhase);
} else {
m_pSprite2->Render(m_fAnimPhase);
}
}
|