首页 > 解决方案 > Raylib cpp IsMouseButtonPressed 导致无限循环

问题描述

我正在使用 raylib 3.5.0,这是我的代码:

    Vector2 startMousePos = GetMousePosition();
    Vector2 endMousePos;
    bool mousePressed = false;
    while (1)
    {
        if (!IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
        {
            break;
        }

        mousePressed = true;
        endMousePos = GetMousePosition();
    }

我想根据鼠标开始单击的位置和结束位置创建一条线,但此代码会导致无限循环。

标签: c++raylib

解决方案


我发现我应该使用从文件顶部的函数声明中获得的 glfwPollEvents 函数,该声明是从 glfw 中提取的,因为 raylib 使用它来管理窗口。自己调用这个方法可能会妨碍 raylibs 输入处理,所以要小心。 extern "C" void glfwPollEvents(void);

我还将我的代码更改为(不,while(1) 不能替换为 while(!IsMouseButtonDown(MOUSE_LEFT_BUTTON))):

        Vector2 startMousePos = GetMousePosition();
        Vector2 endMousePos;
        bool mousePressed;
        while (1)
        {
            if (!IsMouseButtonDown(MOUSE_LEFT_BUTTON))
            {
                break;
            }
            else
            {
                glfwPollEvents();
                if (!mousePressed)
                {
                    mousePressed = true;
                }
                endMousePos = GetMousePosition();
            }
        }

推荐阅读