在所有的surface裏面,只有screen surface是最特殊的。因爲第一,screen surface只有一個;第二,其他所有的普通surface都必須被blit到screen surface上,通過flip screen surface才能顯示出來。所以,我們可以認爲普通的surface是“依賴”於一個screen surface的。所以,考慮在構建surface的時候,除了需要裝載的bmp文件,還需要指定其所依賴的screen surface。
{
private:
string fileName;
SDL_Surface* pSurface;
SDL_Surface* pScreen;
public:
DisplaySurface(string file_name, const ScreenSurface& screen);
~DisplaySurface();
SDL_Surface* point() const;
bool blit() const;
};
2:surface的類方法。
fileName(file_name)
{
pSurface = SDL_LoadBMP(file_name.c_str());
if ( pSurface == 0 )
throw SDL_GetError();
pScreen = screen.point();
}
{
SDL_FreeSurface(pSurface);
}
{
return pSurface;
}
{
if ( SDL_BlitSurface(pSurface, 0, pScreen, 0) < 0 )
return false;
else return true;
}