python - Pygame 零:TypeError:无法创建对“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
我已经搜索了两个错误代码,但没有发现任何对我的案例有用的东西。
解决方案
你得到错误"RecursionError: maximum recursion depth exceeded",因为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)
推荐阅读
- cypress - 赛普拉斯存根 GET 请求
- vue.js - 如何使用 Vue/Vuex 正确排序调用
- javascript - 在页面加载时显示引导模式
- apache-spark - 火花塞覆盖测试
- kendo-ui - Kendo UI 功能太慢:toDataURL 和 saveAsExcel
- c# - 导致文本框自动完成建议出现在代码中
- vb.net - 在 VB.NET 中打开 Photoshop CC
- jvm - G1 GC什么时候触发initial-mark除了IHOP
- ios - 推送通知有时会调用 didFinishLaunchingWithOptions 而不是 didReceiveRemoteNotification
- google-cloud-platform - 继续中断 rsync 后 .gstmp 文件上的 gsutil rsync 错误