【发布时间】:2013-11-22 00:53:58
【问题描述】:
所以首先是代码:
import pygame, sys
from pygame.locals import *
class Person(pygame.sprite.Sprite):
def __init__(self, screen):
self.screen = screen
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("images/mariowalking0.png")
self.rect = self.image.get_rect()
self.rect.center = (320, 220)
self.poseNumber = 1
def update(self):
self.rect.centerx += 1
if self.rect.centerx > self.screen.get_width():
self.rect.centerx = 0
self.poseNumber = (self.poseNumber + 1)
if self.poseNumber == 2:
self.poseNumber = 0
self.image = pygame.image.load("images/mariowalking" + str(self.poseNumber) +".png")
def main():
screen = pygame.display.set_mode((640, 480))
background = pygame.Surface(screen.get_size())
background.fill((255, 255, 255))
screen.blit(background, (0, 0))
boy = Person(screen)
allSprites = pygame.sprite.Group(boy)
keepGoing = True
while keepGoing:
for event in pygame.event.get():
if event.type == pygame.QUIT:
keepGoing = False
pygame.quit()
allSprites.clear(screen, background)
allSprites.update()
allSprites.draw(screen)
pygame.display.flip()
if __name__ == "__main__":
main()
如果你想运行代码,可以在这里找到精灵的图像:http://imgur.com/a/FgfAd
马里奥精灵以非常快的速度在屏幕上运行。尽管我说过我要将 centerx 的值增加 1。任何想法为什么会发生这种情况。
顺便说一句,我对 pygame 真的很陌生,如果我忽略了一个明显的事实或其他东西,我很抱歉。
【问题讨论】:
-
update 被非常频繁地调用......在每次翻转()之后添加几毫秒的延迟......而且我认为翻转比更新()更昂贵
标签: python animation python-3.x pygame