如何解决按下键时 Pygame 不会闪烁图像
所以,我正在尝试制作一个游戏,我正在研究基础知识,我试图弄清楚为什么当我按下 0 键时,它会打印“a”,但是画面没有变化。按下一个也是一样。
import pygame
from pygame.display import mode_ok
pygame.init()
size = width,height = 1000,800
speed = [2,2]
black = 1,2,0
screen = pygame.display.set_mode(size)
mode_ok(size,flags=1,depth=5,display=0)
disPLAYSURF = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
pygame.display.set_caption('Game')
# image database
pic = pygame.image.load(r"intro_ball.gif")
pic2 = pygame.image.load("poeple.png")
pic3 = pygame.image.load("frame_04_delay-0.1s.gif")
pic4 = pygame.image.load("frame_17_delay-0.1s.gif")
screen.blit(pygame.transform.scale(pic,(1000,800)),(0,0))
screen.blit(pic2,(500,400))
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_0:
screen.blit(pic3,0))
print("a")
if event.key == pygame.K_1:
screen.blit(pygame.transform.scale(pic4,0))
print("B")
pygame.event.pump()
如果有人可以提供帮助,将不胜感激。
解决方法
事件循环仅在事件发生时运行一次。在事件循环中绘制图像时,它仅在短时间内可见。如果要永久绘制图片,则需要在应用程序循环中绘制。
将当前图片设置为 current_pic
变量。事件发生时更改变量。在应用循环中不断绘制current_pic
变量所指示的图片:
current_pic = pygame.transform.scale(pic,(1000,800))
clock = pygame.time.Clock()
run = True
while True:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_0:
current_pic = pic3
print("a")
if event.key == pygame.K_1:
current_pic = pygame.transform.scale(pic4,800))
print("B")
screen.blit(current_pic,(0,0))
screen.blit(pic2,(500,400))
pygame.display.flip()
pygame.quit()
典型的 PyGame 应用程序循环必须:
- 通过
pygame.event.pump()
或pygame.event.get()
处理事件。 - 根据输入事件和时间(分别为帧)更新游戏状态和对象位置
- 清除整个显示或绘制背景
- 绘制整个场景(
blit
所有对象) - 通过
pygame.display.update()
或pygame.display.flip()
更新显示 - 限制每秒帧数以限制 CPU 使用率
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。