Feuer wrote:
Ohjelma huutaa "Framen leikkaus epäonnistui" - virsettä, ja tappaa itsensä aina väkivaltaisesti. SDL_BlitSurface()ssa siis tapahtuu jotain häröä, näkeekö kukaan tuossa mitään huonoja parametreja jotka sotkisivat sen toimintaa vai liekö ongelma jossain syvemmällä projektissa?
Yritätkö tehdä jotain animaatio kuva härveliä?
Tässä on jonkinmoinen väsäys jonka tein tilemappi jutskaani varten:
Code: Select all
//Alkumäärittelyt:
struct ANIMIMAGES{
SDL_Surface** img;
int frames;
public:
void ANIMIMAGES::LoadAnimImage(string file, int framew, int frameh, int maskr, int maskg, int maskb);
void DrawAnimImage(int frame, SDL_Surface* buf, int x, int y);
void ClearAnimImages();
};
void DrawImage(SDL_Surface *img, SDL_Surface *screen, int x, int y, int startx, int starty, int w, int h);
void ANIMIMAGES::LoadAnimImage(string file, int framew, int frameh, int maskr, int maskg, int maskb){
SDL_Surface* tmp = SDL_LoadBMP(file.c_str());
if(tmp != NULL){
int x, y, position;
int framecountx, framecounty;
framecountx = tmp->w / framew;
framecounty = tmp->h / frameh;
frames = framecountx*framecounty;
img = new SDL_Surface*[framecountx*framecounty];
for(y = 0; y <= framecounty; y++){
for(x = 0; x <= framecountx; x++){
position = y * framecountx + x;
img[position] = SDL_CreateRGBSurface(SDL_HWSURFACE, framew, frameh, 32, 0, 0, 0, 0);
SDL_SetColorKey(img[position], SDL_SRCCOLORKEY, SDL_MapRGB(img[position] -> format, maskr, maskg, maskb));
DrawImage(tmp, img[position], 0, 0, x*32, y*32, 32, 32);
}
}
}
}
void DrawImage(SDL_Surface *img, SDL_Surface *screen, int x, int y, int startx, int starty, int w, int h){
SDL_Rect dest;
dest.x = x;
dest.y = y;
SDL_Rect imgarea;
imgarea.x = startx;
imgarea.y = starty;
imgarea.w = w;
imgarea.h = h;
SDL_BlitSurface(img, &imgarea, screen, &dest);
}
Koodissa ei ole sitten mitään "turvatarkistuksia" eli jos laittelet parametrejä vähän huolimattomasti, koko homma voi jäätyä.
Ai niin, tarvittavat includet:
Code: Select all
#include <SDL.h>
#include <string>
#include <iostream>