Python 如何创建由事件Id和数学运算组成的简单事件?
我一直在慢慢地学习pygame和python,并尝试制作一个简单的spritesheet动画。我相当肯定我做得不对,但我仍在努力学习课程到底是如何运作的等等。到目前为止,我有一个按键返回Python 如何创建由事件Id和数学运算组成的简单事件?,python,events,timer,pygame,Python,Events,Timer,Pygame,我一直在慢慢地学习pygame和python,并尝试制作一个简单的spritesheet动画。我相当肯定我做得不对,但我仍在努力学习课程到底是如何运作的等等。到目前为止,我有一个按键返回True和一个释放返回FalseTrue然后激活动画循环 while done == False: for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_RIG
True
和一个释放返回False
True
然后激活动画循环
while done == False:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
x_speed = walk_speed
dir = 1
cycle = True
if event.key == pygame.K_LEFT:
x_speed = 0 - walk_speed
dir = 0
cycle = True
if event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT:
x_speed = 0
dir = 1
cycle = False
if event.key == pygame.K_LEFT:
x_speed = 0
dir = 0
cycle = False
if cycle == True:
it += 1
if it > 6:
it = 0
pygame.time.set_timer(it, 100)
elif cycle == False:
it = 1
pygame.time.set_timer(it, 0)
it = 1
ennis.speed = x_speed
if it > 6:
it = 0
if dir == 1:
ennis.sprite = walking_right[it]
if dir == 0:
ennis.sprite = walking_left[it]
ennis.update()
我知道这可能是一个可怕的,混乱的,基本的方法,但它的工作,我理解它!好吧,它几乎起作用了
此时,传递到pygame.time.set_timer()
的事件Id是it
变量,它抛出了一个值错误,表示Id必须介于NOEVENT(0)和NUMEVENTS(32)
之间。因此,在我看来,我需要创建一个事件,将it
增加1,当它超过6时重置为0
提前感谢您的帮助 不需要使用事件来制作动画,其中一种可以使用闪烁的星星
pygame事件队列的工作原理:
操作系统将键盘和鼠标按键发送到队列。调用pygame.event.get()
时,它从队列中获取第一个事件。之后,您可以检查其类型:KEYDOWN和相应的按钮
set_timer的作用是设置一个您选择的重复事件。如果我们将计时器设置为1秒,事件id为12,我们将每秒获得一个事件。然后我们可以做一些动作,例如播放声音。它并没有真正用于动画中
如何编写动画精灵:
您应该具有以下状态,而不是布尔值:站立
和行走
。
精灵应该有一个更新方法,可以在其中移动精灵并更改其曲面。
每次更新调用都应指定下一个曲面。为了获得某种延迟,您可以使用时钟,它将返回自上次呼叫以来的毫秒数。
这样,你可以累积时钟的结果,直到某个最高值,当你改变精灵时。一个小提示-如果某个东西==True
是多余的,你可以只写如果某个东西
和如果不是某个东西
,就写一个假语句