1

pygletのリソースキャッシュをクリアする方法はありますか?リソースのソースイメージがディスク上で変更され、それをリロードする必要がありますが、pygletは代わりにキャッシュされたリソースを使用します。これが私がすることです:

pyglet.resource.path = [self.path]
pyglet.resource.reindex()
self.img = pyglet.resource.image(self.filename)

次に、画像ファイルがディスク上で変更され、それをリロードしたいので、上記を再度実行しますが、pygletは代わりにキャッシュされた画像を使用しているようです。

4

1 に答える 1

1

pygletを使用しているときに、これと同じ問題が発生しました。これは私が思いついた解決策です:

def clear_cache(filename):
        if filename in pyglet.resource._default_loader._cached_images:
            del pyglet.resource._default_loader._cached_images[filename]

わたしにはできる!

説明:

pygletソースを調べた後、resourceモジュールは画像名をと呼ばれる辞書に記録しているようです_cached_images

また、例のようにリソースモジュールを使用すると、リソースモジュールにというオブジェクト_default_loaderが作成されるようです。したがって、キャッシュはにあり_default_loader._cached_imagesます。

リソースをサブクラス化し、そこに独自のメソッドを追加するなど、私が行ったことを達成するためのより良い方法があると確信していclear_cacheます。しかし、私はプログラミングに不慣れで、resourceモジュールのすべてを完全に理解していなかったので、これは私が思いついた最高のものでした。

于 2013-06-11T02:40:54.423 に答える