回答:
一般にXNAを使用する場合、イベント駆動型のコードパラダイムからループ駆動型のコードパラダイムに移行する必要があります。更新コードは毎秒60回ループします。そのため、毎回マウスの状態を見て、ボタンが下にあり、ポインターが四角形内にある場合、通常はOnClickイベントに配置するコードに分岐します。
if(MouseLeftPress()){ DoSomething(); }
。ここでMouseLeftPress()
、現在と以前の左ボタンのマウスの状態を比較するために記述するメソッドがあります。ほとんどの場合、これはイベントを実装するよりも簡単です。
自分で実装する必要があります。チュートリアルをご覧ください:http : //bluwiki.com/go/XNA_Tutorials/Mouse_Input
XNAでマウスクリックをチェックする実際のコードは、このようなものです。
MouseState previousMouseState;
protected override void Initialize()
{
// TODO: Add your initialization logic here
//store the current state of the mouse
previousMouseState = Mouse.GetState();
}
protected override void Update(GameTime gameTime)
{
// .. other update code
//is there a mouse click?
//A mouse click occurs if the goes from a released state
//in the previous frame to a pressed state
//in the current frame
if (previousMouseState.LeftButton == ButtonState.Released
&& Mouse.GetState().LeftButton == ButtonState.Pressed)
{
//do your mouse click response...
}
//save the current mouse state for the next frame
// the current
previousMouseState = Mouse.GetState();
base.Update(gameTime);
}
マウスがクリックされたかどうかを確認する最も簡単な方法はこれです
//Create this variable
MouseState mouseState;
更新メソッドでこれを追加します
mouseState = Mouse.GetState();
if (mouse.RightButton == ButtonState.Pressed)
{
//Do Stuff
}
これが助けたことを願っています