gpt4 book ai didi

c# - 如何订阅双击?

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:18 25 4
gpt4 key购买 nike

我试图找到一种方法来订阅 XNA 中的双击事件,谷歌搜索让我找到了 winforms 相关的东西,但事实并非如此,我不能使用它。

使用 Timespan 并猜测 PC 上双击的超时时间不是很可靠。

默认的 XNA 输入系统也有这个小缺陷:有时按键或鼠标点击会在更新之间丢失,这会破坏游戏高负载时刻双击的可靠性。

如何在 .net 中订阅双击事件?


删除了“不使用 Control 类事件”,因为实际上有一种方法可以使用该类(请参阅我的回答)。

最佳答案

您可以创建自己的双击检查器,如 this post 中所述.

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 的任意值),您可以导入 Windows.Forms 组装并阅读 SystemInformation.DoubleClickTime属性,或者,如果您不想导入程序集,则可以 P/调用 GetDoubleClickTime 方法。

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern int GetDoubleClickTime();

所以在XNA代码中加入上面的方法,就可以这样获取用户默认的双击时间

const double TimerDelay = (double)GetDoubleClickTime();

关于c# - 如何订阅双击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16111555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com