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