2

アプリでGUIをプログラミングしていますが、ボタンの押下がすぐに登録されていないことに気付きました。怠惰なデバッグ(マウスの座標を出力に送信)を行ったところ、InputのGetMouseXとGetMouseYが、マウスがどこかに移動したときの応答速度が遅いことに気付きました。

この小さな一口はそれを再現できるはずです(典型的なゲームループで呼び出されるHandleEvents関数では、明らかにApp :: whateverをワークスペースにあるものに置き換えます)。

int x = App::GetApp()->GetInput().GetMouseX();
int y = App::GetApp()->GetInput().GetMouseY();
std::cout << x << " " << y << "\n";

画面上でマウスを動かして、出力を確認するだけです。これが正しい動作であるかどうか、間違った目的で使用しているのかどうかはわかりませんが、いつでもマウスの正確な位置を取得する方法が必要です。どんな助けでもありがたいです、ありがとう。

PSマウスをゆっくり動かしても、問題は発生しません。

編集:

私は間違っていた。この問題は、残りの作業が行われている状況でのみ発生します。ゲームループのほとんどをブロックし、カーソル位置の取得のみを含めた場合、正常に機能しました。何が悪いのかまだわかりません。

4

1 に答える 1

4

問題は、すべてのイベントをポーリングするのではなく、フレームごとに1つのイベントのみをポーリングしていたことでした。

于 2010-06-30T02:25:56.730 に答える