是否可以使用事件触发pygame中的图像?
就像说我有一个人,我希望他的眼睛像这样突然出现
当我按下按钮而我正在使用
surface.blit(eyes=pygame.image.load('eyes'))
用于眼睛。
我可以像这个链接中的图片那样拉伸眼睛图像吗?
答案 0 :(得分:0)
更好的方法是将两张图像分别用于实际图像,另一张图像用于拉伸眼睛。在需要时绘制第二个图像而不是第一个图像。
import pygame
from pygame.locals import *
screen = pygame.display.set_mode((540, 480))
runner1 = pygame.image.load('./runner1.jpg').convert()
runner1_rect = runner1.get_rect(center=(270, 240))
runner2 = pygame.image.load('./runner2.jpg').convert()
runner2_rect = runner2.get_rect(center=(270, 240))
screen.fill((0, 0, 0))
change = True
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
if event.type == MOUSEBUTTONDOWN:
screen.blit(runner2, runner2_rect)
pygame.display.update()
if event.type == KEYDOWN:
screen.blit(runner1, runner1_rect)
pygame.display.update()
如上例所示,我们得到不同姿势的图像(精灵)并在我们需要动作时播放它们。
开始并理解pygame从PUMMEL THE CHIMP开始,并且有很好的API可以通过pygame来处理sprite及其行为。
答案 1 :(得分:0)
这个问题有一个解决方案可以让你将眼睛拉伸到你想要的确切宽度,但它可能会使眼睛变形......(不管怎样,原始图像眼睛的眼睛已经变形了。)
来自pygame.transform.scale上的Pygame文档:
比例(表面,(宽度,高度),DestSurface =无) - >表面
我们还使用image。get_height(),因此用户无需自己获取高度。
所以你会做这样的事情(包裹在一个函数中):
def stretchEyes(image, newWidth):
return pygame.transform.scale(image, (image.get_height(), newWidth))
eyes = stretchEyes(eyes, image.get_width()*3) # Stretch to three times width
# Blitting takes in the top left position, so we don't need to do any maths here!
screen.blit(eyes, (x,y))