我在SDL中仍然是一个初学者,我遇到了一个我很少迷失的问题。我一直在松散地关注LazyFoo的教程以及其他一些额外的资源。
问题是尝试在窗口上创建动画精灵。 每当我按下一个键时,我设法将故障代码隔离开来。 当我按下某个键时,除了先前使用SDL_CreateWindow函数初始化的窗口外,还会打开一个新窗口。
case SDL_KEYDOWN:
int frame = 0;
//Clear Screen
SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
SDL_RenderClear(renderer);
//Render Current frame
SDL_Rect* currentFrame = &iKey.MegamanRun[frame / 6];
iKey.mmxrender((sx - currentFrame->w) / 2, (sy - currentFrame->h) / 2, currentFrame);
//update screen
SDL_RenderPresent(renderer);
//Next frame
++frame;
我正在使用一个简单的megaman精灵,如果这有助于你理解一些名字。
具体来说,
iKey.mmxrender((sx - currentFrame->w) / 2, (sy - currentFrame->h) / 2, currentFrame);
导致弹出新窗口。
mmxrender函数在不同文件的不同类中,sx和sy是窗口的大小。
void Megaman::mmxrender(int x, int y, SDL_Rect* clip)
{
Init mkey;
//Set rendering space
SDL_Rect renderQuad = { x, y, iWidth, iHeight };
//Set clip dimensions
if (clip != NULL)
{
renderQuad.w = clip->w;
renderQuad.h = clip->h;
}
//Render to screen
SDL_RenderCopy(mkey.renderer, iTexture, clip, &renderQuad);
}
不确定如何继续,感谢任何帮助。