【问题标题】:PollEvent not working without mouse movement[SDL]PollEvent 在没有鼠标移动的情况下无法正常工作[SDL]
【发布时间】:2018-07-24 03:29:21
【问题描述】:

如果鼠标没有在窗口内移动或者在应该运行动画时没有按下任何键,则会绕过 PollEvent。代码如下:

    SDL_Init(SDL_INIT_EVERYTHING);
    int imgFlags = IMG_INIT_PNG | IMG_INIT_JPG;
    if (IMG_Init(imgFlags) != imgFlags)
    {
        std::cout << IMG_GetError() << std::endl;
    }
    window = SDL_CreateWindow("NRG", 200, 200, 800, 600, SDL_WINDOW_SHOWN);
    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED| SDL_RENDERER_PRESENTVSYNC);


    isRunning = true;
    while (isRunning)
    {
        while (SDL_PollEvent(&ev))
        {
            heroImg = LoadTxt("image.png", renderer);
            SDL_QueryTexture(heroImg, NULL, NULL, &textureWidth, &textureHeight);
            frameWidth = textureWidth / 3;
            frameHeight = textureHeight / 4;
            heroRct.x = 0;
            heroRct.y = 0;
            heroRct.h = frameHeight;
            heroRct.w = frameWidth;
            frameTime++;
            if (60 / frameTime == 4)
            {
                frameTime = 0;
                heroRct.x += frameWidth;
                if (heroRct.x >= textureWidth)
                    heroRct.x = 0;
            }
            SDL_RenderClear(renderer);
            SDL_RenderCopy(renderer, heroImg, &heroRct, NULL);
            SDL_RenderPresent(renderer);
        }
    }
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    window = NULL;
    windowSurface = NULL;
    renderer = NULL;
    SDL_Quit();

SDL_Event ev 等其他内容;包含在 .h 文件中

【问题讨论】:

    标签: c++ sdl mouse


    【解决方案1】:

    对于遇到相同问题的任何人: 将您的渲染等放在 while (SDL_PollEvent(&ev)) 循环之外:)

    愚蠢的错误,初学者很难解决:)

    【讨论】:

      猜你喜欢
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多