首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C#和DirectX获得Joystick的输入

使用C#和DirectX获得Joystick的输入
EN

Stack Overflow用户
提问于 2021-01-12 07:44:14
回答 1查看 2.2K关注 0票数 0

我正在使用VisualStudio2019,我的问题与这个教程的使用密切相关。我已经完成了所有步骤,如:

  1. 在C#中创建窗口窗体
  2. 添加现有文件Joystick.cs
  3. 添加参考项
  4. 添加应用程序配置文件并粘贴所提供的代码
  5. 将示例代码粘贴到Form1.cs中

我的问题是:我错过了什么?我无法访问操纵杆错误截图的库

下面是整个Form1.cs代码:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace RunJoyStickOnLocalMachine{

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

    private void Form1_Load(object sender, EventArgs e)
    {

    }
    private void joystickTimer_Tick_1(object sender, EventArgs e)
    {
        try
        {
            joystick.UpdateStatus();
            joystickButtons = joystick.buttons;

            if (joystick.Xaxis == 0)
                output.Text += "Left\n";

            if (joystick.Xaxis == 65535)
                output.Text += "Right\n";

            if (joystick.Yaxis == 0)
                output.Text += "Up\n";

            if (joystick.Yaxis == 65535)
                output.Text += "Down\n";

            for (int i = 0; i < joystickButtons.Length; i++)
            {
                if (joystickButtons[i] == true)
                    output.Text += "Button " + i + " Pressed\n";
            }
        }
        catch
        {
            joystickTimer.Enabled = false;
            connectToJoystick(joystick);
        }
    }
}
}

如果我还有什么需要提供的,请通知我。

谢谢!

编辑:我已经解决了这个问题,通过比较教程文件和一步一步的教程文件,博客有。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-13 03:03:28

您可以从您提到的文章中下载该项目,以检查代码。

根据我的测试,在将theJoystick.cs添加到项目之后,可以在form1.cs代码中使用以下代码。

代码语言:javascript
复制
public partial class Form1 : Form
    {

        private Joystick joystick;        // define the type Joystick
        private bool[] joystickButtons;  // here  define the bool array
        public Form1()
        {
            InitializeComponent();
            joystick = new Joystick(this.Handle);
            connectToJoystick(joystick);
        }

        private void joystickTimer_Tick(object sender, EventArgs e)
        {
            try
            {
                joystick.UpdateStatus();
                joystickButtons = joystick.buttons;

                if (joystick.Xaxis == 0)
                    output.Text += "Left\n";    // output is the name of richtextbox

                if (joystick.Xaxis == 65535)
                    output.Text += "Right\n";

                if (joystick.Yaxis == 0)
                    output.Text += "Up\n";

                if (joystick.Yaxis == 65535)
                    output.Text += "Down\n";

                for (int i = 0; i < joystickButtons.Length; i++)
                {
                    if (joystickButtons[i] == true)
                        output.Text += "Button " + i + " Pressed\n";
                }
            }
            catch
            {
                joystickTimer.Enabled = false;
                connectToJoystick(joystick);
            }
        }
        private void enableTimer()
        {
            if (this.InvokeRequired)
            {
                BeginInvoke(new ThreadStart(delegate ()
                {
                    joystickTimer.Enabled = true;
                }));
            }
            else
                joystickTimer.Enabled = true;
        }
        private void connectToJoystick(Joystick joystick)
        {
            while (true)
            {
                string sticks = joystick.FindJoysticks();
                if (sticks != null)
                {
                    if (joystick.AcquireJoystick(sticks))
                    {
                        enableTimer();
                        break;
                    }
                }
            }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65679789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档