Pygame Zero:类型错误:无法创建对"NoneType"对象的弱引用



你好,我目前正在编写一个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,并将返回值传递给clock.schedule_unique。这导致了无休止的递归。

您必须传递函数本身(anim_right而不是anim_right()(:

clock.schedule_unique(anim_right(), 0.5)

clock.schedule_unique(anim_right, 0.5)

您的代码可能依赖于从并不总是存在的对象创建存储信息。无论你在创建一个弱引用,要么弄清楚如何确保它总是被定义的,要么以一种即使在没有定义对象的情况下也能工作的方式编写程序。

最新更新