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 回答