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

3
我有代码。
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
                    }
                }
            }
        }
    }
}

这基本上是我从这些教程中复制的一个事件结构。我可以得到SDL_QUIT和SDLK_ESCAPE事件,但如果我尝试让

hasquit = true

无论是使用哪个鼠标按钮的语句,都没有任何反应。
1个回答

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
                }
            }
        }
    }
}

哇,那真令人沮丧。噢,现在它可以运行了。谢谢! - Austin Gayler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接