如何移动物体而不会结结?

时间:2019-03-31 01:17:11

标签: c# visual-studio

当我想朝某个方向移动时,会出现断断续续的结结,直到我松开琴键为止。我不确定如何解释它,但我希望它平稳地朝没有初始卡死的方向移动。

我尝试进行搜索,但是我真的不知道如何描述这个问题,我发现所有教程都在做同样的事情。

        if (key.KeyCode == Keys.W)
        {
            picPlayer.Top -= 5;
        }

        if (key.KeyCode == Keys.S)
        {
            picPlayer.Top += 5;
        }

它看起来像这样

初始按键暂停→→→→→→→→→→→→→→                         <连续运动

希望这很有道理

编辑:(我正在使用视觉工作室)

1 个答案:

答案 0 :(得分:0)

这是一个非常简单的示例,可以帮助您入门。您将需要添加对两个程序集的引用才能起作用。

第1步。Solution Explorer中,右键单击References,然后选择PresentationCoreWindowsBase,将这些引用添加到您的项目中。

第2步。Timer添加到表单中,然后按照(Name) = timerInterval = 16设置属性。在事件标签上,将Tick事件处理程序设置为timer_Tick(双击将自动执行该操作。

第3步。 这是表格的代码。

您还应该在表单上为Load事件添加事件处理程序,这里的处理程序称为Form1_Load。该代码还假定您在表单上有一个名为picPlayer的控件,在您的情况下可能是PictureBox控件。

using System;
using System.Windows.Forms;
using System.Windows.Input;

namespace MovePlayerDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            timer.Enabled = true;
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            if (Keyboard.IsKeyDown(Key.W))
            {
                picPlayer.Top -= 5;
            }

            if (Keyboard.IsKeyDown(Key.S))
            {
                picPlayer.Top += 5;
            }
        }
    }
}

这应该使您入门。基本上发生的是您检查键盘状态然后适当更新游戏对象的每个计时器滴答声。请注意,有更好的方法可以执行此“游戏循环”,但是现在这将使其保持简单,并且您不必担心跨线程等更新控件。