无法在SDL中轮询鼠标单击事件

时间:2011-08-23 17:56:53

标签: c++ event-handling sdl user-input

我有代码

int userinput()
{
    while(hasquit == false)
    {
        while ( SDL_PollEvent(&event) )
        {
            if ( event.type == SDL_QUIT )
            {
                hasquit = true;
            }
            if ( event.type == SDL_KEYDOWN )
            {
                if ( event.key.keysym.sym == SDLK_ESCAPE )
                {
              hasquit = true;
                }
                if(event.type == SDL_MOUSEBUTTONDOWN)
                {
                    if(event.button.button == SDL_BUTTON_LEFT)
                    {
                //do something
                    }
                }
            }
        }
    }
}

这几乎是我从these tutorials复制的事件结构。我可以获得SDL_QUIT和SDLK_ESCAPE事件,但如果我尝试制作

hasquit = true

使用任一mousebutton if语句,没有任何反应。

1 个答案:

答案 0 :(得分:3)

你有

if(event.type == SDL_MOUSEBUTTONDOWN)

里面的

if ( event.type == SDL_KEYDOWN )

块。它应该是分开的。

这应该有效:

int userinput()
{
    while(hasquit == false)
    {
        while ( SDL_PollEvent(&event) )
        {
            if ( event.type == SDL_QUIT )
            {
                hasquit = true;
            }
            if ( event.type == SDL_KEYDOWN )
            {
                if ( event.key.keysym.sym == SDLK_ESCAPE )
                {
                    hasquit = true;
                }
            }
            if(event.type == SDL_MOUSEBUTTONDOWN)
            {
                if(event.button.button == SDL_BUTTON_LEFT)
                {
                    //do something
                }
            }
        }
    }
}