この投稿で説明されているように、独自のダブルクリック チェッカーを作成できます。
double ClickTimer;
const double TimerDelay = 500;
public override void Update(GameTime gameTime)
{
ClickTimer += gameTime.ElapsedGameTime.TotalMilliseconds;
if(Mouse.GetState().LeftButton == ButtonState.Pressed)
{
if(ClickTimer < TimerDelay)
//this is a double click
else
//this is a normal click
ClickTimer = 0;
}
}
そのコードで500
は、ユーザーがダブルクリックしなければならないミリ秒単位の最大時間として設定されています。ユーザーがシステムの最大ダブルクリック時間として設定したミリ秒を (任意の値に設定するのではなく) 取得するには、アセンブリを500
インポートしてSystemInformation.DoubleClickTimeプロパティを読み取るか、またはしたくない場合はアセンブリをインポートすると、メソッドを P/Invoke できます。Windows.Forms
GetDoubleClickTime
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern int GetDoubleClickTime();
上記のメソッドを XNA コードに追加すると、次のようにユーザーのデフォルトのダブルクリック時間を取得できます。
const double TimerDelay = (double)GetDoubleClickTime();