2009-07-30 10 views
1

最近、この質問がpyglet-usersグループで尋ねられましたが、レスポンスを得ましたので、ここで試してみます。Pygletで新しい入力イベントディスパッチャーを作成する(赤外線入力)

lircでサポートされている赤外線入力デバイスを使用できるようにPygletを拡張したいと考えています。私はPyGameで(http://pylirc.mccabe.nu/)の前にpyLircを使っていましたが、代わりにPygletを使うようにアプリケーションを書き直したいと思います。

ボタンが押されたかどうかを確認するには、通常、pyLircをポーリングしてそのキューにボタンが押されているかどうかを確認します。

私の質問は、PyLircを統合するPygletの正しい方法は何ですか?

現在のウィンドウのキーボード/マウスイベントと同じであれば好きですが、どこから開始するのかはわかりません。

私はイベントの 新しいタイプを登録し、そのように、ポーリング後にそれらを派遣することが可能な、私は新しいのEventDispatcherを作成することができます知っている:

class pyLircDispatcher(pyglet.event.EventDispatcher): 
    def poll(self): 
     codes = pylirc.nextcode() 
     if codes is not None: 
      for code in codes: 
       self.dispatch_event('on_irbutton', code) 

    def on_irbutton(self, code): 
     pass 

しかし、どのように、私は、アプリケーションのメインにすることを統合します私がpyglet.app.run()を使用していて、マウスとキーボードのディスパッチャーと同じように動作するように、このイベントディスパッチャーを私のウィンドウに接続するにはどうすればいいですか?

私は、pyglet.clock.schedule_intervalで定期的にpoll()を呼び出すスケジューラを設定できますが、これは正しい方法ですか?

答えて

1

これはおそらくOPのために遅すぎるかもしれませんが、他の人にとって役立つ場合は、とにかく返信します。

定期的な間隔でpoll()を呼び出すためにイベントディスパッチャーを作成し、pyglet.clock.schedule_intervalを使用するのは良い方法です。あなたのウィンドウにイベントディスパッチャを添付する

、あなたはそのpush_handlers方法ディスパッチャのインスタンスを作成して呼び出す必要があります:

dispatcher.push_handlers(window) 

を次に、あなただけに来て、他のイベントのようなイベントを扱うことができます窓。

1

正しい方法は何でも可能です。より良い方法を見つけたら、いつでも後で変更することができます。

関連する問題