有没有办法清除pyglet中的资源缓存?资源的源映像在磁盘上更改,我需要重新加载它,但是pyglet使用缓存的资源。这就是我要做的:
pyglet.resource.path = [self.path]
pyglet.resource.reindex()
self.img = pyglet.resource.image(self.filename)然后,磁盘上的图像文件发生了变化,我想重新加载它,并再次执行上述操作,但pyglet似乎使用了缓存的图像。
发布于 2013-06-11 10:40:54
我在使用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模块中的所有内容,所以这是我想出的最好的方法。
https://stackoverflow.com/questions/14367791
复制相似问题