我正在使用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对象上单击鼠标并释放鼠标时按钮的功能正常工作。
答案 0 :(得分:0)
执行此操作的正确方法是安装一个带有glfwSetMouseButtonCallback
的鼠标侦听器,该监听器保留对鼠标键按下感兴趣的事项列表,并通知它们(基本上,与观察者模式一样)。