你什么时候得到 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.XRectangle.Y为 0。

你什么时候得到 Mouse.getstate().X 或 Y 为负数

来自 MSDN:

如果鼠标位于工作区的左侧( 游戏窗口,不包括边框),返回的坐标为 阴性。如果鼠标位于工作区的右侧,则 返回的坐标大于窗口的工作区宽度。

这与其说是答案,不如说是评论(我没有足够的声誉来评论),但我只看到当鼠标在窗口外时才发生这种情况......我建议将GetState()调用从 for 循环中取出,并在循环外调用一次 - 这是唯一让我印象深刻的事情。你说有时它有效,有时它不起作用,这是完全随机的还是第一次拨打GetState()电话?