你什么时候得到 Mouse.getstate().X 或 Y 为负数
本文关键字:什么时候 Mouse getstate | 更新日期: 2023-09-27 18:32:24
我正在创建一个使用函数的游戏:
int x()
{
int px = 100;
int pxend = 128;
int xx = 0;
for (int i = 0; i < 6; i++)
{
l = Mouse.GetState().X;
if (l > px && l < pxend)
{
xx = px;
break;
}
else
{
px += 128;
pxend += 128;
}
}
return xx;
}
int y()
{
int px = 100;
int pxend = 128;
int xx = 0;
for (int i = 0; i < 4; i++)
{
l = Mouse.GetState().X;
if (l > px && l < pxend)
{
xx = px;
break;
}
else
{
px += 128;
pxend += 128;
}
}
return xx;
}
但是当我调试时,即使单击GameWindow
屏幕后启动调试,我也会得到一个负值l
值。有时它工作正常,有时工作不正常。我不知道为什么它给了我负值。当我将它们与Rectangle
一起使用时,我会得到Rectangle.X
,Rectangle.Y
为 0。
来自 MSDN:
如果鼠标位于工作区的左侧( 游戏窗口,不包括边框),返回的坐标为 阴性。如果鼠标位于工作区的右侧,则 返回的坐标大于窗口的工作区宽度。
这与其说是答案,不如说是评论(我没有足够的声誉来评论),但我只看到当鼠标在窗口外时才发生这种情况......我建议将GetState()
调用从 for 循环中取出,并在循环外调用一次 - 这是唯一让我印象深刻的事情。你说有时它有效,有时它不起作用,这是完全随机的还是第一次拨打GetState()
电话?