单击而不在GLFW中拖动鼠标

时间:2014-04-24 18:36:37

标签: c++ opengl glfw

我正在使用GLFW为我的3D游戏引擎制作GUI系统,我需要像我的按钮这样的UI对象才能在单击它们时执行它们的功能。

程序通过检查光标的坐标检查用户是否点击了按钮的区域,但问题是如果用户点击并拖动按钮区域,则按钮“ s函数被重复调用。有办法阻止这个吗?

void ui_Button::click(void (*f)())
{
    if (mouseX >= pPosX && mouseX <= pWidth && mouseY >= pPosY && mouseY <= pHeight && glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_LEFT))
    {
        (*f)();
    }
}

我想到的另一个选项但不知道怎么做是在按钮或UI对象上单击鼠标并释放鼠标时按钮的功能正常工作。

1 个答案:

答案 0 :(得分:0)

执行此操作的正确方法是安装一个带有glfwSetMouseButtonCallback的鼠标侦听器,该监听器保留对鼠标键按下感兴趣的事项列表,并通知它们(基本上,与观察者模式一样)。