我正在做一個pygame的程序動畫精靈,但問題是沒有一個特定的錯誤:現在pygame的程序執行錯誤
import sys
import os
import pygame
from pygame.locals import *
pygame.init()
WHITE = (255, 255, 255)
BLACK = ( 0, 0, 0)
Surface = pygame.display.set_mode ((400, 400), 0, 32)
pygame.display.set_caption ('Animation Test')
class Processes (object):
@staticmethod
def load_image (imagefile):
image = pygame.image.load (imagefile) #Remember to call imagefile as a string statement
return image, image.get_rect()
class Sprite (pygame.sprite.Sprite):
def __init__ (self):
pygame.sprite.Sprite.__init__ (self)
self.image, self.rect = Processes.load_image ('frame1.jpg')
self.blindrect = pygame.Rect ((self.rect.top - 289, self.rect.left - 289), (self.rect.width, self.rect.height))
def animation (self, key_event = None, mouse_event = None):
blindpass = 0
if key_event == K_LEFT:
self.rect.centerx = self.rect.centerx - 10
if key_event == K_RIGHT:
self.rect.centerx = self.rect.centerx + 10
if key_event == K_UP:
self.rect.centery = self.rect.centery - 10
if key_event == K_DOWN:
self.rect.centery = self.rect.centery + 10
if mouse_event == MOUSEBUTTONDOWN:
self.rect.centerx, self.rect.centery = pygame.mouse.get_pos()
if blindpass > 0:
if key_event == K_LEFT:
self.blindrect.centerx = self.blindrect.centerx - 10
if key_event == K_RIGHT:
self.blindrect.centerx = self.blindrect.centerx + 10
if key_event == K_UP:
self.blindrect.centery = self.blindrect.centery - 10
if key_event == K_DOWN:
self.blindrect.centery = self.blindrect.centery + 10
if mouse_event == MOUSEBUTTONDOWN:
self.rect.centerx, self.rect.centery = pygame.mouse.get_pos()
mecha = Sprite()
allsprites = pygame.sprite.RenderPlain ((mecha,))
while True:
Surface.fill (WHITE)
for event in pygame.event.get():
if event.type == KEYDOWN:
mecha.animation (key_event = event.key)
if event.type == MOUSEBUTTONDOWN:
mecha.animation (mouse_event = event.type)
if event.type == QUIT:
pygame.quit()
sys.exit (0)
allsprites.draw (Surface)
pygame.display.update ((mecha.rect, mecha.blindrect))
,錯誤是有點怪。輸出結果是精靈確實出現在屏幕上,當我提供鍵盤和鼠標輸入時,精靈會移動,但問題在於它離開了蹤跡。這就是爲什麼我創建了一個矩形來跟蹤精靈矩形,每當遊戲循環循環時應該用白色填充。但事實並非如此。至少,直到我最小化窗口並再次拉起它,所有路徑消失,背景變成白色而不是黑色。但是當我移動圖像時,軌跡又開始形成了。我最小化,他們消失了應該。
你可以把傳遞RECT序列插入pygame.display.flip髒矩形動畫? – user1792990
翻轉強制整個屏幕更新,保證沒有跟蹤。但是您可以使用rect列表來替代,只需使用rect列表調用http://www.pygame.org/docs/ref/display.html#pygame.display.update即可進行更新。不帶參數調用'display.update'幾乎與調用'pygame.display.flip'相同。 – ninMonkey