我正在努力实现的目标:
到目前为止我所拥有的:
我似乎无法弄清楚(我已经尝试了所有我能想到的)
关于我的代码:
我有一个MouseInput类,用于检查是否按下了鼠标左键。我正在使用布尔变量来尝试切换将显示切片边框(如果单击)或不显示边框(如果再次单击)的变量。我的代码将允许边框显示,但我无法让它在另一次点击时消失。我无法真正展示我尝试的所有东西(已经尝试了2天而且不记得我做了什么)。到目前为止,这是我的代码的一部分:
bool toggle; // Set to false in constructor
bool justPressed; // Set to false in constructor
bool justReleased; // Set to false in constructor
void Mouse::Update() // My custom mouse class Updating function (updates position, etc)
{
input.Update(); // My MouseInput class Updating function.
if (input.Left() && !toggle) // input.Left() checks if left mouse was pressed. True if it is pressed down, and false if it's not pressed.
{
// So we have pressed the mouse
justPressed = true;
justReleased = false;
printf("UGH FML");
}
else if (!input.Left()) // So the mouse has been released (or hasn't clicked yet)
{
justPressed = false;
justReleased = true;
}
if (justPressed)
{
toggle = true;
}
}
我已经尝试了一切我能想到的切换回假。而现在我的大脑正在受伤。可能有一个真正简单的解决方案,但我无法绕过它。建议?
答案 0 :(得分:0)
我认为您正在寻找的是以下代码块:
if (input.Left() && toggle) { //mouse is pressed and toggle is already true
toggle = false;
}
您还应删除以下代码块,因为如果按下它将设置切换为true,无论切换是否已经为真:
if (justPressed) {
toggle = true;
}
相反,您可以直接在if对应于初始点击的内部设置切换:
if (input.Left() && !toggle) { //mouse is pressed and toggle is false
toggle = true;
}
如sp2danny所述,这两个块可以简化为:
if (input.Left()) { //mouse is pressed
toggle = !toggle;
}