2012-01-12 108 views
0

如何防止精靈圖像無法控制閃爍? (圖像名稱是管道工)。當你運行程序時,唯一的圖像閃爍是精靈。爲什麼精靈圖像閃爍/ filckering?

import pygame 
import os, sys 
import itertools 
import pygame 
from pygame.sprite import Sprite 

cloud_background = pygame.image.load('clouds.bmp') 
brick_tile = pygame.image.load('brick_tile.png') 
plumbers = pygame.image.load('Mario_sideways_sprite_2xL.png') 

pink = (255, 64, 64) 
w = 640 
h = 480 
screen = pygame.display.set_mode((w, h)) 
running = 1 

def setup_background(): 
    screen.fill((pink)) 
    screen.blit(cloud_background,(0,0)) 
    brick_width, brick_height = brick_tile.get_width(), brick_tile.get_height() 
    for x,y in itertools.product(range(0,640,brick_width), 
           range(390,480,brick_height)): 
     # print(x,y) 
     screen.blit(brick_tile, (x,y)) 


def show_sprites(): 
    screen.blit(plumbers,(50,337)) 
    pygame.display.flip() 



while running: 
    show_sprites() 
    setup_background() 
    pygame.display.flip() 
    event = pygame.event.poll() 
    if event.type == pygame.QUIT: sys.exit() 
+1

您可以在show_sprites中翻轉並設置背景。嘗試刪除show_sprites翻轉,可能工作(不能測試atm) – Glider 2012-01-12 14:39:56

+0

如果我拿走了「翻轉」,然後沒有圖像apears ... – enrique2334 2012-01-12 20:03:07

+1

我想你想調用setup_background(),然後show_sprites(),所以精靈畫在背景上。就像Glider說的那樣從show_sprites中刪除pygame.display.flip()。 – 2012-01-13 13:48:13

回答

0

我真的不知道pygame,但是當你在等待這方面有更多經驗的人的回答時。我可以提供可能有所幫助的建議。

您每次從頭開始設置背景,這是一個處理器密集型過程。最好的方法是實際上只重新渲染所需背景的一部分。也就是說,你的水管工精靈在之前佔據的部分。

通常,您可以通過創建兩個名爲old X,old Y的變量來完成此操作。

當前您每個循環都呈現整個屏幕。