0
我一直在寻找事件和委托在过去的几天,我决定尝试使用这两个使MouseHandler类。MouseHandler事件和代表c#
基本上我有这个问题,鼠标点击没有注册,并且x轴和y轴的位置回到0,通过不注册我只是指通过console.WriteLine()显示在输出控制台中。我一直在研究一段时间,但我没有运气,所以我想知道你们中的任何一个人是否可以将我指向正确的方向,这将不胜感激。
预先感谢您。
MouseHandler.cs
class MouseHandler
{
public delegate void MouseEventHandler(object source, MouseEventHandlerArgs
public event MouseEventHandler MouseLeftClick;
public event MouseEventHandler MouseRightClick;
public event MouseEventHandler MouseMoved;
public MouseState mouseState = Mouse.GetState();
protected virtual void OnMouseLeftClick(MouseState m)
{
mouseState = m;
if(MouseLeftClick != null)
{
MouseLeftClick(this, new MouseEventHandlerArgs() { MouseButtonPress = m });
}
}
protected virtual void OnMouseMoved(MouseState m)
{
if (MouseMoved != null)
{
MouseMoved(this, new MouseEventHandlerArgs(){MouseButtonPress = m });
Console.WriteLine(mouseState.Position.X);
}
}
public void Update(GameTime gt)
{
OnMouseLeftClick(mouseState);
OnMouseMoved(mouseState);
}
}
MouseEventHandlerArgs
class MouseEventHandlerArgs : EventArgs
{
public MouseState MouseButtonPress { get; set; }
}
MouseTest
class MouseTest
{
public void OnMouseLeftClick(object source, MouseEventHandlerArgs e)
{
Console.WriteLine("Mouse Left click" + e.MouseButtonPress.LeftButton);
}
public void OnMouseMoved(object source, MouseEventHandlerArgs e)
{
Console.WriteLine("you moved mouse to x " + e.MouseButtonPress.Position.X + " Y pos " + e.MouseButtonPress.Position.Y);
}
}
的Game1 之内的更新方法:
mouseHandler.MouseLeftClick += mouseTest.OnMouseLeftClick;
mouseHandler.MouseMoved += mouseTest.OnMouseMoved;
//mouseHandler.Update(gameTime);
关于跟踪光标的位置,是该代码精确: 'MousePoint =新点(currentMouseState.X,currentMouseState.Y);',然后简单地'的String.format()''的和MousePoint'绘制'string'?它还具有'if(Rectangle.Contains(MousePoint)){...}'...... –
@JohnyP的优点。当然,你可以使用'Point'而不是单独的'x'和'y'变量。 – itsme86