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