python - 我在 Pygame 中遇到了精灵的问题。我希望他们改变它们,让它看起来像一个动画,我真的不知道该怎么做
问题描述
def redraw():
global walkCount
global x
night(0, 0)
street(0, -800)
if walkCount + 1 >= 27:
walkCount = 0
if left:
gameDisplay.blit(walkLeft(walkCount//3), (x, y))
walkCount += 1
elif right:
gameDisplay.blit(walkRight(walkCount//3), (x, y))
walkCount += 1
else:
gameDisplay.blit(char(x, y))
pygame.display.flip()
所以这是重绘框架的定义。walkLeft
并且walkRight
是带有图片的列表。
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT or event.key == pygame.K_a:
x_change = -vel
left = True
right = False
elif event.key == pygame.K_RIGHT or event.key == pygame.K_d:
x_change = +vel
right = True
left = False
else:
right = False
left = False
walkCount = 0
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT or event.key == pygame.K_d or event.key == pygame.K_a:
x_change = 0
right = False
left = False
这就是左右行走的逻辑。
你能帮我吗,我是菜鸟,我想学习。
解决方案
walkLeft(walkCount//3)
是一个函数调用语句。但是,walkLeft
andwalkRight
是列表,而不是函数。您必须通过订阅 ( ()
-> []
) 获取列表元素:
gameDisplay.blit(walkLeft(walkCount//3), (x, y))
gameDisplay.blit(walkLeft[walkCount//3], (x, y))
gameDisplay.blit(walkRight(walkCount//3), (x, y))
gameDisplay.blit(walkRight[walkCount//3], (x, y))
推荐阅读
- javascript - React setState 更新不正确的子组件
- php - 如果购买了特定产品,Woocommerce BCC 向多封电子邮件发送电子邮件通知
- android - 如何将我的 CameraManager 更新到最新版本?
- c# - 使用 BindingSource 时指定列数据类型
- php - cookie 不是由 setcookie 设置的,但有 0 个错误 (SSO)
- javascript - react-native 中的“找不到变量:点击”
- entity-framework - 在 RawSQLQuery 填充对象时关闭 PropertyChanged 事件
- python - 如何在 Python 中创建返回星期几的代码?
- jackson-databind - 如何在没有 ObjectNode 的情况下创建 ValueNode?
- ocaml - OCaml 编译类型错误,不是正确的预期函数类型