Pygame Zero: TypeError: cannot create weak reference to 'NoneType' object
Pygame Zero: TypeError: cannot create weak reference to 'NoneType' object
你好,我目前正在编写一个小的 2D 游戏。我已经想出了运动等。现在我想使用我在这里找到的东西添加一个简单的动画:
def anim_right():
global counter_right
imagesright = ["tesbold_right1_x1000.png","tesbold_right2_x1000.png"]
Tesbold.image = imagesright[counter_right]
counter_right = (counter_right + 1) % len(imagesright)
print("anim_right ausgeführt")
每个主要方向都有这个。这也可以正常工作,唯一的例外是它会导致癫痫发作,因为我在我的 update() 函数中调用了这个函数。基本上每一帧都在改变图像。
我曾考虑添加一个 clock.schedule_unique,但这似乎行不通。
如果我像这样在动画函数中添加它:
def anim_right():
global counter_right
imagesright = ["tesbold_right1_x1000.png","tesbold_right2_x1000.png"]
Tesbold.image = imagesright[counter_right]
counter_right = (counter_right + 1) % len(imagesright)
print("anim_right ausgeführt")
clock.schedule_unique(anim_right(), 0.5)
我收到以下错误代码:
RecursionError: maximum recursion depth exceeded
如果我在我的函数中尝试调用我的 anim_right() 函数,如下所示:
def update(): #Updates per Frame
global walking
if walking == True:
if Tesbold.direction == 0:
clock.schedule_unique(anim_right(), 0.5)
我收到以下错误代码:
TypeError: cannot create weak reference to 'NoneType' object
我已经搜索了两个错误代码,但没有找到对我的案例有用的东西。
您收到错误 “递归错误:超出最大递归深度”,因为 anim_right()
是一个函数调用语句。
clock.schedule_unique(anim_right(), 0.5)
行实际上调用了函数 anim_right
并将 return 值传递给 clock.schedule_unique
。这导致无限递归。
您必须传递函数本身(anim_right
而不是 anim_right()
):
clock.schedule_unique(anim_right(), 0.5)
clock.schedule_unique(anim_right, 0.5)
您的代码可能依赖于从并不总是存在的对象创建存储信息。无论您要创建弱引用,要么弄清楚如何确保它始终被定义,要么以这样一种方式编写您的程序,即使在对象未定义时它也能正常工作。
你好,我目前正在编写一个小的 2D 游戏。我已经想出了运动等。现在我想使用我在这里找到的东西添加一个简单的动画:
def anim_right():
global counter_right
imagesright = ["tesbold_right1_x1000.png","tesbold_right2_x1000.png"]
Tesbold.image = imagesright[counter_right]
counter_right = (counter_right + 1) % len(imagesright)
print("anim_right ausgeführt")
每个主要方向都有这个。这也可以正常工作,唯一的例外是它会导致癫痫发作,因为我在我的 update() 函数中调用了这个函数。基本上每一帧都在改变图像。
我曾考虑添加一个 clock.schedule_unique,但这似乎行不通。
如果我像这样在动画函数中添加它:
def anim_right():
global counter_right
imagesright = ["tesbold_right1_x1000.png","tesbold_right2_x1000.png"]
Tesbold.image = imagesright[counter_right]
counter_right = (counter_right + 1) % len(imagesright)
print("anim_right ausgeführt")
clock.schedule_unique(anim_right(), 0.5)
我收到以下错误代码:
RecursionError: maximum recursion depth exceeded
如果我在我的函数中尝试调用我的 anim_right() 函数,如下所示:
def update(): #Updates per Frame
global walking
if walking == True:
if Tesbold.direction == 0:
clock.schedule_unique(anim_right(), 0.5)
我收到以下错误代码:
TypeError: cannot create weak reference to 'NoneType' object
我已经搜索了两个错误代码,但没有找到对我的案例有用的东西。
您收到错误 “递归错误:超出最大递归深度”,因为 anim_right()
是一个函数调用语句。
clock.schedule_unique(anim_right(), 0.5)
行实际上调用了函数 anim_right
并将 return 值传递给 clock.schedule_unique
。这导致无限递归。
您必须传递函数本身(anim_right
而不是 anim_right()
):
clock.schedule_unique(anim_right(), 0.5)
clock.schedule_unique(anim_right, 0.5)
您的代码可能依赖于从并不总是存在的对象创建存储信息。无论您要创建弱引用,要么弄清楚如何确保它始终被定义,要么以这样一种方式编写您的程序,即使在对象未定义时它也能正常工作。