最近、SDL を使用して自分のゲーム (スペース インベーダーのクローン) を作成しようとしましたが、イベントに問題がありました... 2 つのイベントがあり、1 つはタイマーによって発行され、移動中の敵船を描画するために使用します。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 を使用しています