最近我一直在尝试使用 SDL 编写自己的游戏(克隆太空入侵者),但我遇到了事件问题......我有 2 个事件,一个由我的计时器发出,我用它来绘制移动的敌舰。第二个事件是我用来移动我的船的键盘事件。当我开始游戏时,敌舰开始完全按照我的预期移动,但如果我按下键或移动鼠标,它们的移动速度会变慢。我在移动我的船时遇到了同样的问题,如果我尝试移动鼠标,帧速率会减慢很多。我的事件循环:
while(!exit)
{
while(SDL_PollEvent(&event));
{
if(event.type == SDL_QUIT) exit=true;
if(event.type == SDL_KEYDOWN)
{
switch(event.key.keysym.sym)
{
case SDLK_LEFT:
pship.move(pship.getPosition().x - 1, pship.getPosition().y);
break;
case SDLK_RIGHT:
pship.move(pship.getPosition().x + 1, pship.getPosition().y);
break;
}
}
if(event.type == SDL_USEREVENT)
{
switch(event.user.code)
{
case 1:
static int xOffset, yOffset;
xOffset++;
yOffset++;
drawEnemyShips(eship,xOffset,yOffset);
break;
}
}
}
}
我使用 Visual c++ 2010 express 和 SDL 1.2.15