提问者采纳
由Keydown和keyup事件组合,keyDown来判定按下,此时开始移动,KeyUp判定松开,这样可行否?
追问
这是我一开始的写法,但就是因为 键盘重复延迟 导致keydown后会有一下停顿
回答
我的意思是有一个在keydown事件中有一个bool量判定是否按下了某个键,比如W,之后作为这类程序应该始终有个线程循环检测按键与画面结果显示(或渲染),最简单的有一个timer,每过一定时间间隔检查一下按键,在keyup里设定bool为松开。这种写法并不靠键盘重复时间来移动,而是靠你的循环函数速度来移动:
全局函数:
System.Timers.Timer timer1;
然后是有若干bool量:
bool pressW = false; 程序的构造函数里:
timer1 = new System.Timers.Timer();
timer1.Elapsed+=new System.Timers.ElapsedEventHandler(move);
timer1.Start(); 你的人物keyDown事件:
private void someObject_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.W)
pressW = true;
}
KeyUP事件:
private void someObject_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.W)
pressW = false ;
}
最后是移动函数:
private void move(object sender, System.Timers.ElapsedEventArgs e)
{
if(pressW)
someObject.Location = new Point(someObject.Location.X, someObject.Location.Y - );
} 如果你控制的是窗体控件移动,也请使用窗体控件中的timer,不然你会遇上传说中的线程访问窗体控件问题。祝好运。
提问者评价
感谢回答
问了好多天了终于有个好心人出来了

C#_C++_SDK_WM_KEYDOWN人物卡顿延迟解决方法的更多相关文章

  1. Win10蓝牙鼠标老是断连卡顿的解决方法

    一直用一个微软家的蓝牙鼠标,饱受鼠标卡顿困扰,今天找到了一个解决方案,用了下,效果显著.具体操作见下文. 原文地址:https://jingyan.baidu.com/article/c85b7a64 ...

  2. 安卓手机USB无法共享、上网或卡顿的解决方法

    安卓手机通过USB为电脑(Windows10)提供网络接入点时,系统程序会异常卡顿. 1)设备管理器2)点击“网络适配器”,在弹出的下拉列表中选择”Remote NDIS based Internet ...

  3. wordpress后台打开慢/卡顿的解决方法

    ---------------------2014年12月29日更新--------------------- 我已经用下面提到的第三种方法禁用了谷歌字体了,最近wordpress后台还是莫名奇妙地非 ...

  4. Visual Studio 调试卡顿的解决方法

    将不用的断点删除 关闭调试时打开的"IntelliXXX的窗口" 上面的第2条测试有效! https://social.msdn.microsoft.com/Forums/zh-C ...

  5. 织梦DEDECMS本地后台操作卡顿的解决方法

    打开/data/common.inc.php,把默认的$cfg_dbhost = ‘localhost‘修改为$cfg_dbhost = ‘127.0.0.1’;保存.然后你会发现后台操作起来流畅多了 ...

  6. app内嵌h5页面在ios手机端滑动卡顿的解决方法

    1.带滚动条的dom需加样式 -webkit-overflow-scrolling: touch;2.去掉 width:100%; height:100%

  7. Selenium -- ActionChains().move_by_offset() 卡顿的解决方法

    测试运行时间 运行时间 发现每次0.5秒,此时需要修改默认的时间 打开Python安装目录下的Lib\site-packages\selenium\webdriver\common\actions\p ...

  8. win10桌面右键卡顿卡死解决方法

    win+R,打开命令行 输入services.msc 找到NADIA Display Container LS,将其由自动改为禁用,解决问题. PS:网上有些改注册表的方法,确实可以治标,但是大家都应 ...

  9. emwin之BUTTON控件显示位图和流位图出现卡顿延迟的情况

    @2019-05-16 [问题] 参照Armfly的emwin教程第46章 BUTTON-按钮控件显示位图和流位图,实际使用时导致界面切换卡顿延迟较大的情况 [环境] F429IGT6 + W9825 ...

随机推荐

  1. Ubuntu14.04 Server Apache2+subversion环境搭建

    自从工作后,发现之前的代码开发太随便啦,于是经过不到两年的工作积累,打算在自己开发软件的过程中好好管理自己的项目.于是打算搭建自己的项目服务器,去年搭建过一次,但是由于没有记录,现在需要再来一遍,好多 ...

  2. NYOJ 7-街区最短路径问题(曼哈顿距离)

    街区最短路径问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间 ...

  3. JAVA 内存的认识【转】

    [转]:http://blog.sina.com.cn/s/blog_68158ebf0100wp83.html 一.Java内存的构成     先上一个官方java document里的图: 由上图 ...

  4. 如何在MFC对话框之间自定义消息传递

    在MFC项目开发中,涉及到不同模块间数据信息的传递,如用户在登录界面成功登录后向系统管理模块发送用户名和密码等信息. 首先,需明确以下两点: 谁要发送这个消息--消息发送方 谁要接受这个消息--消息接 ...

  5. JavaScript知识(二)

    你要保守你心,胜过保守一切,因为一生的果效,是由心发出的.————O(∩_∩)O... ...O(∩_∩)O...老师因有事下午没来上课,今天就只把中午讲的知识总结一下.由于昨天只是讲了JavaScr ...

  6. asp.net word内容读取到页面

    1.添加Microsoft.Vbe.Interop.dll引用. 2.以下方法可以简单的读取到word文档文字内容,不包括图片.格式等. private string ReadWordFile(str ...

  7. 浅谈Spring(三)

    一.基础Spring的标准测试 1.导入spring与junit继承的jar 2.引入注解 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfig ...

  8. WPF:向客户端发出某一属性值已更改的通知INotifyPropertyChanged接口

    Person.cs using System.ComponentModel; namespace _01_INotifyPropertyChanged { class Person:INotifyPr ...

  9. break在switch中的使用例子

    /* Name:break在switch中的使用例子 Copyright: By.不懂网络 Author: Yangbin Date:2014年2月21日 03:16:52 Description:以 ...

  10. 剑指offer——stack与queue的互相实现

    我们知道,stack和queue是C++中常见的container.下面,我们来探究下如何以stack来实现queue,以及如何用queue来实现stack. 首先,先了解下stack与queue的基 ...