首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >鼠标单击时的精灵动画

鼠标单击时的精灵动画
EN

Stack Overflow用户
提问于 2019-05-22 01:56:46
回答 2查看 123关注 0票数 0

我试图使3个图像的精灵动画,我需要的动画播放在一次鼠标点击。

我试着使用这个代码,它适用于站立和行走的动画,但当我使用它进行拍摄时,动画不会发生,因为鼠标点击速度很快(虽然我按住了鼠标按键,它仍然有效)。

代码语言:javascript
复制
        if self.standing:
            if now - self.last_update > 50:
                self.last_update = now
                self.current_frame = (self.current_frame + 1) % len(self.game.player_idles)
                self.image = pg.transform.scale(self.game.player_idles[self.current_frame], (64, 55))
                self.image_copy = pg.transform.rotate(self.image, 270)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-22 03:12:04

使用事件队列。

update中,替换:

代码语言:javascript
复制
    if mouse[0]:
        self.shooting = True
        self.standing = False
        self.moving = False
    else:
        self.shooting = False

通过以下方式:

代码语言:javascript
复制
    for event in pygame.event.get():
        if e.type == MOUSEBUTTONDOWN:
            shoot()

然后,您可以完全删除shooting bool,并将if self.shooting所做的图形更改添加到shoot函数中。或者,如果您想保留shooting布尔值,可以这样做:

代码语言:javascript
复制
    for event in pygame.event.get():
        if e.type == MOUSEBUTTONDOWN:
            self.shooting = True
            self.moving = False
            self.standing = False
        if e.type == MOUSEBUTTONUP:
            self.shooting = False

此代码的响应性更好,因为它在用户输入事件(单击)时工作,而不是在按下鼠标按钮时工作。

票数 0
EN

Stack Overflow用户

发布于 2019-05-22 02:16:42

我不知道你是如何调用拍摄部分的动画的。

你能为此发布你的代码吗?然后我可能会告诉你更多。否则,我的代码可能没有意义/用处。我对此感到抱歉。(我还不能发表评论)

检查pygame事件中的鼠标单击状态。如果您发现点击,将其存储在一个(S)标志中,就像您对站立部件所做的那样。

我们将在这里使用一个名为click_animation_state的变量来查看我们当前所在的帧。

代码语言:javascript
复制
self.game.shooting_frames = [img1, img2, img3]

if self.mouse_clicked:
    if now - self.last_update > time_threshold:
        self.last_update = now
        self.current_frame = (self.current_frame + 1) % 
        len(self.game.shooting_frames)
        self.image = pg.transform.scale(self.game.click_frames[self.current_frame], (64, 55))
        self.image_copy = pg.transform.rotate(self.image, 270)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56243969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档