/ / Perché sprite image flashing / filckering? - python, pygame

Perché l'immagine sprite lampeggia / filckering? - python, pygame

Come posso evitare che l'immagine sprite sfarini incontrollabilmente? (il nome dell'immagine è idraulico). quando esegui il programma l'unico sfarfallio dell'immagine è lo sprite.

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()

risposte:

0 per risposta № 1

Non so davvero Pygame, ma mentre aspetti la risposta da qualcuno con più esperienza in questo settore, posso offrire questo consiglio che potrebbe aiutarti.

Il tuo impostare lo sfondo da zero ciascunotempo che è un processo intensivo del processore. L'approccio migliore consiste invece nel re-rendering della parte dello sfondo richiesta. Sono le parti in cui il tuo sprite idraulico era già occupato.

Normalmente lo fai creando due variabili chiamate vecchia X, vecchia Y. Questo processo di rendering è passato.

Attualmente esegue il rendering dell'intero schermo ogni ciclo di ciclo.