私はC#とSharpdxについては初めてです。数日前からこのコードの問題があり、うまくいかない方法がわかりません! これは、ジョイスティックの 1 つの軸の値を取得し、それをフォームのテキスト ボックスに表示する簡単なタスクです。
Visual Studio 2010 Express で新しいプロジェクトを作成し、ジョイスティック軸 (X 軸) の値を表示するためのボタンと textBox を使用してフォームを作成しました。
ここにあるコードの最初の部分は、sharpdx ドキュメントの例で、2 番目の部分は少し異なります。
問題は、ボタンを押すたびに値が変わらないことです
何かが間違っているが、私は何がわからない
private void button3_Click(object sender, EventArgs e)
{
// Initialize DirectInput
var directInput = new DirectInput();
// Find a Joystick Guid
var joystickGuid = Guid.Empty;
foreach (var deviceInstance in directInput.GetDevices(DeviceType.Gamepad, DeviceEnumerationFlags.AllDevices))
joystickGuid = deviceInstance.InstanceGuid;
// If Gamepad not found, look for a Joystick
if (joystickGuid == Guid.Empty)
foreach (var deviceInstance in directInput.GetDevices(DeviceType.Joystick, DeviceEnumerationFlags.AllDevices))
joystickGuid = deviceInstance.InstanceGuid;
// If Joystick not found, throws an error
if (joystickGuid == Guid.Empty)
{
Console.WriteLine("No joystick/Gamepad found.");
Console.ReadKey();
Environment.Exit(1);
}
// Instantiate the joystick e stato
Joystick joystick = new Joystick(directInput, joystickGuid);
JoystickState stato = new JoystickState();
// specifico se relativo o assoluto
joystick.Properties.AxisMode = DeviceAxisMode.Absolute;
// effettuo un collegamento con il joystick
joystick.Acquire();
// qui faccio una acquisizione dello stato che memorizzo
joystick.Poll();
// effettuo una lettura dello stato
joystick.GetCurrentState(ref stato);
// stampo il valore dell'ordinata
textBox1.Text = stato.X.ToString();
}