teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/04/20 01:35

投稿

fana
fana

スコア12207

answer CHANGED
@@ -1,4 +1,20 @@
1
1
  GLFW なら callback を使えばどうでしょう.
2
2
 
3
3
  glfwSetKeyCallback で設定した callback 関数の引数にイベント情報(押した,離した,etc)が来るから,
4
- それで判定するので十分ならば,自前で押された履歴みたいなのを記憶するよりは楽かも.
4
+ それで判定するので十分ならば,自前で押された履歴みたいなのを記憶するよりは楽かも.
5
+
6
+ ---
7
+
8
+ 編集された件について:
9
+
10
+ > なぜか1という値が数フレーム返って来てしまいます。本来押された瞬間であれば1は一回だけで後は2の値が来るはずなのですがログを見ると数フレーム来てしまっています。これは何が原因なのでしょうか?
11
+
12
+ 1を複数回表示しているのはあなたのメインループです.
13
+ callback関数の引数に1が複数回連続で来ているわけではありません.
14
+
15
+ あなたの言う「数フレーム」の間に,callback関数が何回呼ばれているのかを確認すべきです.
16
+ というか,キーを押しっぱなしにした時のcallback関数の呼ばれ具合を最初に確認すべき.
17
+ キーリピート(:テキストエディタ上でキーを押しっぱなしにしたときの入力具合)と同様の呼び出しタイミングになるはず.
18
+
19
+ キーを押した際に callback関数が呼ばれて,値が1になった後(キーを押しっぱなしにしたとして),
20
+ 次に callback関数が呼ばれて値が2になるまでの間に,「数フレーム」が経過しています.