鸡还是蛋:在哪里初始化变量?正在检测XNA中的单击

本文关键字:检测 XNA 单击 变量 初始化 在哪里 | 更新日期: 2023-09-27 18:19:33

我有一个美丽的生命周期,但我需要开始它,作为一个新手,我不知道在哪里声明变量currentMouseState,因为它需要有一个值才能使整个事情正常工作。使用XNA4.0在C#中工作,谢谢:)

// mouse management
var lastMouseState = currentMouseState;
// causes error because currentMouseState not declared
var currentMouseState = Mouse.GetState();
var currentMousePosition = new Point(currentMouseState.X, currentMouseState.Y);
// Recognize a single click of the right mouse button
if (lastMouseState.RightButton == ButtonState.Released && currentMouseState.RightButton == ButtonState.Pressed)
{
    // React to the click
    // feed the fish, someday
    counter++;
    this.Window.Title = "Clicked " + counter.ToString() + " times!";
}

鸡还是蛋:在哪里初始化变量?正在检测XNA中的单击

已声明

    MouseState currentMouseState;
    MouseState lastMouseState;

就在构造函数之前,并删除了我之前代码中这些变量的var标签。抛出一个错误,说"局部变量的声明隐藏了字段",但现在一切都好了。编码快乐!

您应该将其放在currentMouseState之后。

在Update方法中定义lastMouseState(我认为这就是您正在做的)是不起作用的。你必须使它成为一个全局变量。(把它放在类的顶部,而不是放在方法/函数中)

由于您总是希望它存储上一帧鼠标的状态,因此您应该始终在Update()结束时更改其值。如果在更改值后使用它,它将具有当前帧的值,并且与currentMouseState完全相等。