2012-01-09 3 views
0

私は、Gtkライブラリを使用してCでゲームを作成しています。このライブラリでは、プレイヤーが移動可能な文字を制御します。しかし、私は、プレーヤーが一方向に連続的に移動するためにキーを保持できるようにしたい。キーを保持するための通常の動作をオーバーライドするには、キーイベントが生成され、一時停止が発生し、キーイベントが連続したストリームで発生します。キー押下の遅延を削除する

私はJavascriptで同じことをすることについて以前に尋ねられた同様の質問に気付きました。しかし、答えは実際にGtkで同じシステムを実装するのに役立たない。私はGtkDeviceの "クラス"があることに気付きました。私はキーボード入力のバッファリングを制御できるようにする必要がある関数はありますか?

+0

遅延/リピートの動作は、ご使用のアプリケーションではなく、お使いのオペレーティングシステムによって制御されている可能性があります。キーダウン/キーアップイベントを直接追跡することで、独自のサポートを作成することができます。 –

+1

GTKはゲームを書くのに最適なツールですか?私はこれらの機能を自動的に提供する専用のゲームツールキットを使用することをお勧めします。 – ptomato

+0

今後の使用のためにC言語のGUIを学びたかったので、特別なツールキットを使う必要はありません。 –

答えて

3

GTKのkey_press_eventkey_release_event信号に接続します。

あなたの説明どおりに動作します。

あなたが興味を持っているキーが特定の時点で現在押されているかどうかを追跡することはあなたの責任です。

+0

コメントする前に、gtk_key_snooper_install()を使って回避する方法を考えることができました。私は質問をしてから8時間が経過するまで私自身の質問に答えるのに十分な評判はありませんが、明日私は解決策を投稿します。しかし、助けてくれてありがとう。 –

+0

実際には、キャラクター生成イベントなどではなく、主要なプレス/リリースイベントをトラッキングする必要があります。 –

+0

ええ、私のソリューションは、あなたが提案しているものとまったく同じです。助けてくれてありがとう。 –

関連する問題