Я просматривал события и делегаты в течение последних нескольких дней, и я решил попытаться сделать класс 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