有没有办法清除pyglet中的资源缓存?资源的源映像在磁盘上更改,我需要重新加载它,但pyglet使用缓存的资源。 这就是我的工作:
pyglet.resource.path = [self.path]
pyglet.resource.reindex()
self.img = pyglet.resource.image(self.filename)
然后图像文件在磁盘上发生变化,我想重新加载它,我再次执行上述操作,但是pyglet似乎使用了缓存的图像。
答案 0 :(得分: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
模块中的所有内容都不太了解,所以这是我提出的最好的。