Python 如何创建由事件Id和数学运算组成的简单事件?

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

我一直在慢慢地学习pygame和python,并尝试制作一个简单的spritesheet动画。我相当肯定我做得不对,但我仍在努力学习课程到底是如何运作的等等。到目前为止,我有一个按键返回
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
是多余的,你可以只写
如果某个东西
如果不是某个东西
,就写一个假语句