Ongelmana on se, kun yritän laittaa kahta kuvaa vaihtumaan, niin se ei toimi. Voisikos joku vilkaista koodia. Olen vasta muutaman viikon opiskellut SDL:ää
void AnimoiKuvat(SDL_Surface *naytto, SDL_Surface *eka, SDL_Surface *toka, int aika, int x, int y) { bool animaatio = false; while(!animaatio) { PiirraKuva(eka, naytto, x, y); SDL_Delay(aika); animaatio = true; } while(animaatio) { PiirraKuva(toka, naytto, x, y); SDL_Delay(aika); animaatio = false; } }
Jos sinulla on kaksoispuskurointi käytössä, joudut käyttämään funktiota SDL_Flip, jolle annetaan parametriksi osoitin näyttöpintaan.
Sen jälkeen muutosten pitäisi näkyä.
Ja nuissa while-loopeissa ja tuossa animaatio-muuttujassa ei ole ainakaan tuossa mitään järkeä.
Joo ja tiedoksi että ei ole kaksoispuskurointi.
Jos tarkoitus on joka toisella funktiokutsulla piirtää kuva "eka" ja vastaavasti joka toisella "toka", niin homma ei noin voikaan toimia - bool animaatio kun alustetaan joka kerralla uudestaan falseksi. Parempi ratkaisu olisi siirtää animaatio-muuttuja funktion parametriksi ja säilyttää sen arvoa funktion ulkopuolella.
Jatkossa kannattaa myös tutustua esim. SDL_GetTicks() -funktioon ja vaihtaa kuvat funktiossa vain, jos tarvittava aika on kulunut. SDL_Delay on vielä ~siedettävä ratkaisu pienessä kokeilussa, mutta jos tarvii ohjelmaan esim. jotain syötettä (hiiri, näppis), on se ihan turha.
Zach kirjoitti:
Parempi ratkaisu olisi siirtää animaatio-muuttuja funktion parametriksi ja säilyttää sen arvoa funktion ulkopuolella.
Tai tehdään siitä animaatio-muttujasta static.
Aihe on jo aika vanha, joten et voi enää vastata siihen.