我正在制作一个游戏,我有一个名为 MainCharacter 的类,它首先初始化主角(在图片框中),然后我有一个 KeyDown 事件来处理移动。在那个事件中,如果我按下箭头键,我就能够处理角色的移动,我什至做了一个基于计时器的移动动画,让它看起来更流畅。
但是,KeyDown 事件的问题是每次按下键都会触发,这意味着如果我按住箭头键以使角色继续向一个方向移动,则重复触发事件,这意味着角色像鱼雷一样在屏幕上运行,因为事件的触发速度与计算机可以处理的一样快。
这就是我决定使用 KeyPress 事件的原因,这样当我按住键时,角色会以稳定的速度向指定方向移动。但是,KeyPress 事件无法处理箭头键,这就是为什么我必须在主窗体中重写 ProcessDialogKey 方法。但是如果我在主窗体中覆盖它,那么每次我按下箭头键时都会触发该事件,即使我不在游戏中,但例如在主菜单或其他任何地方。此外,我认为这将是一个不好的做法,如果我试图通过跨类来编程东西这么多。
那么,有没有其他方法可以让我在 MainCharacter 类中的箭头上处理 KeyPress 事件而不影响其他类?或者我是否有机会继续使用我已经工作的 KeyDown 事件,并使其在按住键时不会重复触发?请记住,我想要实现的是当我按住我的键时我的角色可以流畅地移动。到目前为止,如果我只按一次它就可以正常工作,但通常人们在朝一个方向行走时会按住键。