mieki256's diary



2013/05/12() [n年前の日記]

#1 [prog] まだpygletを勉強中

勉強中。

ogg再生。 :

oggのループ再生もできた。
source = pyglet.media.load('res/bgm32.ogg', streaming=False)
self.player = pyglet.media.ManagedSoundPlayer()
self.player.queue(source)  # キューに入れる
self.player.eos_action = self.player.EOS_LOOP  # ループ再生を指定
self.player.play()  # 再生開始
こんな感じっぽい。

ジョイスティックへの対応。 :

pyglet は、ジョイスティックにも対応しているらしい。ただし、pyglet 1.2以降(1.2 alpha1 1含む)で対応、という条件付きだけど。

手持ちのデジタルパッドを接続して実験してみたら、たしかに読み取れている模様。であれば、描画が遅い pygame をわざわざ使わなくても済みそうな予感も。

スクリプト実行中にジョイスティックを引き抜いたらどうなるのか試してみたら、エラーが出て終了してしまった。「応答なし」になったりしないあたりは助かるけれど、終了しちゃうのもよろしくない。接続状態をチェックしてスクリプトの動作に反映させられるのだろうか。try - except を使えばどうにかなるのかな。そのへんまだ調べてない。

メインループの書き方がよくわからず。 :

メインループの書き方、というか、座標等の更新処理(update())と描画処理(on_draw())がどんな順番・流れで呼ばれているのか、そのあたりがちょっと分からなくて少しアレだなと。画面が時々カクッとなるのだけど、そのへんが絡んでたりするのだろうか。どうなんだろう。

exe化しようとしてハマる。 :

pygletを使ったスクリプトをpy2exeでexe化しようとしてハマる。ちなみに環境は、Windows7 x64 + Python 2.6.6 + pyglet 1.2alpha1。pyglet 1.2 alpha 1 は、 _Python Extension Packages for Windows - Christoph Gohlke から入手したもの、だったと思う。

不具合その1。モジュールが無い云々のエラーが出て起動しない。以下のようなエラーが出る。
D:\pub\exe_test\test_pyglet>fullscrpyglet.exe
Unexpected error loading library D:\pub\exe_test\test_pyglet\library.zip\pyglet\media\avbin: 指定されたモジュールが見つかりません。
Unexpected error loading library avbin: 指定されたモジュールが見つかりません。
Traceback (most recent call last):
  File "fullscrpyglet.py", line 35, in <module>
  File "zipextimporter.pyo", line 82, in load_module
  File "pyglet\media\__init__.pyo", line 1469, in <module>
  File "zipextimporter.pyo", line 82, in load_module
  File "pyglet\media\avbin.pyo", line 68, in <module>
  File "pyglet\lib.pyo", line 111, in load_library
  File "ctypes\__init__.pyo", line 431, in LoadLibrary
  File "ctypes\__init__.pyo", line 353, in __init__
WindowsError: [Error 126] 指定されたモジュールが見つかりません。
これは、avbin.dll が必要ということだったらしい。avbin.dll は、
C:\Python26\Lib\site-packages\pyglet\media\avbin.dll
あたりにあるので、exe化した .exe と同じフォルダにコピーする。音声の再生に使うのだろう…と思ったけれど、後になって、どうもそういう感じではなさそうな気もしてきた。

不具合その2。.exe終了時にエラーを吐く。エラーというか、正確には warning なのだけど。以下のようなログが出力されて、「ログを残したよ!」とダイアログが開いて鬱陶しいわけで。
C:\home\prg\_wk\PythonPygletTest1\src\dist\library.zip\pyglet\lib.py:118: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
C:\home\prg\_wk\PythonPygletTest1\src\dist\library.zip\pyglet\lib.py:119: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
C:\home\prg\_wk\PythonPygletTest1\src\dist\library.zip\pyglet\lib.py:120: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
これは、pyglet 1.2 alpha 1 に入ってる lib.py 内の記述がマズいらしい。
C:\Python26\Lib\site-packages\pyglet\lib.py
というファイルなのだけど。 _1.2 Alpha and Python 3 - Google グループ に報告があったので、試しに書き換えてみたところ、終了時にエラーが出なくなった。

エラーは出なくなったけど、現状では別PCに持っていっても動くところまでできていない。メインPC上ならexe化したファイルも動いてるように見えるけど、録画用PC上では画面全体の色がランダムに変わるだけで、スプライト等の表示が一切できず。しかしoggは再生されている…。pygame + PyOpenGL が動いてたから、OpenGL 関係は一切扱えないPCというわけではないのだろうけど。AMD 785G を乗せたM/Bなわけだし…。

また、ウインドウアプリではなく、コンソールアプリとして exe を作ったら、avbin モジュールが無いとメッセージが表示された。
D:\pub\exe_test\test_pyglet>fullscrpyglet.exe
Unexpected error loading library D:\pub\exe_test\test_pyglet\library.zip\pyglet\media\avbin: 指定されたモジュールが見つかりません。
何をどうすればいいのか、さっぱり分からず。

参考にしているページをメモ。 :


以上、1 日分です。

過去ログ表示

Prev - 2013/05 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project