这是我使用pyglet.resource.animation()函数创建的用于在后台加载动画的代码,而该应用程序还执行了其他一些操作。
import pyglet
import threading
animations = dict()
class LoadingThread(object):
def __init__(self):
thread = threading.Thread(target=self.run, args=())
thread.start() # Start the execution
def run(self):
""" Method that runs forever """
loadAnimations()
print("Loaded all animations.")
def loadAnimations():
global animations
print("In loadAnimations")
for animation in os.listdir(os.getcwd()):
if animation.endswith(".gif"):
print(animation)
#Gives segmentation fault here
animations[animation] = pyglet.resource.animation(animation)
print("Loaded animations")
thread = LoadingThread()
在没有线程的情况下正常调用时运行良好。如果还有其他方法可以在pyglet中将动画加载到背景中,请提出建议。
谢谢。
如@Frank Merrow所建议。这里的问题是我正在使用该功能pyglet.resource.animation("filename.gif")
在我的主线程中也起作用。因此,这造成了细分错误。我发现了另一个也可以加载动画的功能。
pyglet.image.load_animation("filename.gif")
使用此方法解决了我的问题。
也可以通过启动两个线程同时运行主流和后台工作来解决此问题。