问题描述
我一直在尝试编写一个角色会四处移动的小游戏。出于某种原因,我不能使用 gif。之后,我将 gif 变成了一堆 png,然后我尝试编写一些代码来为它设置动画:
def animate():
global frame
curr_img = "player-walk" + str(frame)
player.image = curr_img
frame += 1
if frame > 2:
frame = 1
当我尝试这段代码时,我一调用它就会出错。这是我写的完整代码:
import pgzrun as pgzero
import pygame
player = Actor("player")
frame = 1
WIDTH = 660
HEIGHT = 450
def move_player():
if keyboard.w:
player.y -= 2
clock.schedule_interval(animate(),0.5)
if keyboard.s:
player.y += 2
if keyboard.a:
player.x -= 2
if keyboard.d:
player.x += 2
def animate():
global frame
curr_img = "player-walk" + str(frame)
player.image = curr_img
frame += 1
if frame > 2:
frame = 1
def draw():
screen.clear()
player.draw()
def update():
move_player()
pgzero.go()
错误在此链接中: mystb.in/LitFillEquilibrium.sql
解决方法
在这一行
clock.schedule_interval(animate(),0.5)
clock.schedule_interval
接受一个可调用(一个函数)和区间。通过在 animate
后添加括号,您实际上是在调用函数并传递其输出。由于 animate
不返回任何内容(None
),因此您的操作与此相同:
clock.schedule_interval(None,0.5)
应该在哪里
clock.schedule_interval(animate,0.5)