トップページ > 記事閲覧
GetJoypadInputStateについて
名前:tho 日時: 2014/02/20 02:47

時々、特定のキーが押しっぱなしになる事があります。 一度この現象が起きると、実行しているプログラムを一度閉じてからやり直さないと治りません。 例えば、パッドの方向キー下が押しっぱなしになってしまった時、デバックを行い int InputState ; InputState = GetJoypadInputState( DX_INPUT_PAD1 ) ; このコードを実行してパッドからの入力を確認すると 何もキーを入力していないのに、方向キー下の入力値の1がInpusStateに帰ってきます。 何が原因かわかりますでしょうか? ただ当方の環境で、たまにShiftキーやCtrlキーのが押しっぱなしの状態になる時がありまして もしかしたらハードウェアが原因かもしれませんが、何かお解りになられましたらご教示頂けたらと思います。
メンテ

Page: 1 |

Re: GetJoypadInputStateについて ( No.1 )
名前:Will 日時:2014/02/20 09:36

ハードに起因するかもしれない不具合の報告の場合、以下の情報を提示するべきかと思います。 ・PC環境  OS、使用しているパッド ・DXライブラリのバージョン ・現象が再現できる最小限のソース
メンテ
Re: GetJoypadInputStateについて ( No.2 )
名前:管理人 日時:2014/02/22 22:51

キーボードのキーが押しっぱなしになることは私も経験がありますが、 パッドでは今のところ経験したことがありません ただ、DirectInput や XInput には「不正な入力状態になってしまっているかどうか」を 検出する手段が無いので、そのような状況になってしまったらプログラムを起動し直すしかないです・・・ あとは、もしかしたら ProcessMessage を呼ぶ頻度を上げると現象が発生しにくくなるかもしれません
メンテ
Re: GetJoypadInputStateについて ( No.3 )
名前:SmokingWOLF 日時:2014/03/04 00:23

どこに報告すればいいか迷っていたのですが、こちらに書かせていただきます。 パッドとは違うのですが、こちらはキーボードのキーが 入りっぱなしになる症状で最近悩んでいました。 しかし、私の場合はソース中に含まれていた SetSysCommandOffFlag( TRUE ); の関数を「消す」ことで、ゲーム中にキーが押しっぱなしになる現象が非常に起きにくくなりました。 この関数を含む状態と、そうでない状態の差だけで友人に実験してもらったところ、 2回実験すれば1回はキーが押しっぱなしになる状態から、 20回実験しても1度も発生しない状態まで改善されました。 我々も、ProcessMessageの頻度が下がると キーが押しっぱなしになる現象が発生しやすい印象があったのですが、 上の関数をオフにすることで、ProcessMessageの頻度が下がった場合でも キーが押されっぱなしになる現象が非常に発生しにくくなったように感じます。 暇がなく、サンプルソースも用意できていない状態なので、 全く見当違いのことを申し上げているかもしれませんが、 もしかしたら何かのヒントになるかもしれません。
メンテ
Re: GetJoypadInputStateについて ( No.4 )
名前:管理人 日時:2014/03/06 01:14

ご報告ありがとうございます SetSysCommandOffFlag は無理矢理システムキーを無効にしているので、 想定していない症状が発生してしまっているのかもしれません 個人的にシステムキーを無効化するのはあまり気が進まないのと、 無効の仕方が無理矢理なので同じ WindowsOS 同士でもバージョンが違うと 無効化方法を変えなければならなかったりと面倒なので、 SetSysCommandOffFlag( TRUE ) ; の使用を非推奨としようかと思っています (- -;
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存