SFMLとOpenGLを使用して、矢印キーで画面上を移動できる回転する正方形を描画する簡単なプログラムを作成しました。
テストしたすべてのLinuxおよびMacコンピューターで正常に動作しますが、Windowsで正方形を移動しようとすると(矢印キーを押したまま)、少し移動してから移動と回転が停止します。プログラムがGetEvent
メソッドでスタックしていると確信しています-繰り返しを開始するのに十分な時間キーを押したままにすると、すべてをポップオフする前に、イベントスタックに新しいイベントが追加され続けますそれ(そして、Windowsのキーリピートレートを最小値まで下げると、問題は解決します-しかし、これを解決策としてはあまり好きではありません)。
Alt、Ctrl、Delete、Page Up、Page Down、Home、Endなどを押し続けると、この動作も発生することがわかりました(プログラムでこれらのキーを特に検出していなくても)が、すべての文字キー、スペース、Enterキー、BackSpaceキー、およびキーパッドの矢印キーは正常に機能します(つまり、長押ししてもプログラムが一時停止することはありません)。
正確なコードはありませんが(ラップトップの電源を切ったばかりです)、次のようになります。
while(running) {
while(app.GetEvent(event))
if(event.Type==sf::Event::Closed) running=false;
if(input.IsKeyDown(sf::Key::Right)); // move right
// etc etc
// update rotation
// draw everything
}
正確な問題が何であるか、そしてどのようにそれを修正できるかについてのアイデアはありますか?