2012-01-12 5 views
0

Как я могу предотвратить, чтобы изображение спрайта мерцало неуправляемо? (имя изображения - сантехник). при запуске программы единственным мерцанием изображения является спрайт.Почему изображение спрайт-спрайт?

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, который может работать (Can not test atm) – Glider

+0

, если я заберу «флип», тогда изображение не появится ... – enrique2334

+1

Я думаю, что вы хотите вызвать setup_background(), а затем show_sprites(), поэтому спрайты рисуются над фоном. Также удалите pygame.display.flip() из show_sprites, как сказал планер. –

ответ

0

Я действительно не знаю pygame, но пока вы ждете ответа от кого-то, у кого больше опыта в этой области. Я могу предложить этот совет, который может помочь.

Ваша настройка фона с нуля каждый раз, когда это процесс с интенсивным процессором. Наилучший подход заключается в том, чтобы вместо этого на самом деле только повторно отобразить часть фона. Я там, где раньше занимался ваш сантехник.

Обычно вы делаете это, создавая две переменные, называемые старыми X, старыми Y. Это процесс рендеринга тратится.

В настоящее время вы визуализируете весь экран каждый цикл цикла.