背景の上に小さなスプライト (ボール) を表示しようとして、Pygame を使用する Python コードに取り組んでいます。私はその部分を機能させていますが、ボールスプライトの背景を透明にしようとしているので、「黒い四角の中のボール」スプライトとして表示されませんが、代わりに黒いピクセルが表示されませんディスプレイ表面にブリット。
これが私のコードです:
# For sys.exit()
import sys
# Pygame imports
import pygame
from pygame.locals import *
# Initialize all the Pygame Modules
pygame.init()
# Build a screen (640 x 480, 32-bit color)
screen = pygame.display.set_mode((640,480))
# Create and Convert image files
# Use JPG files for lots of color, and use conver()
# Use PNG files for transparency, and use convert_alpha()
background = pygame.image.load("bg.jpg").convert()
ball = pygame.image.load("ball.png").convert_alpha()
ball.set_colorkey(-1, RLEACCEL) # Use the upper-left pixel color as transparent
# The main loop
while True:
# 1 - Process all input events
for event in pygame.event.get():
# Make sure to exit if the user clicks the X box
if event.type == QUIT:
pygame.quit()
sys.exit()
# 2 - Blit images to screen (main display window)
screen.blit(background, (0,0))
x,y = pygame.mouse.get_pos()
x = x - ball.get_width()/2
y = y - ball.get_height()/2
screen.blit(ball, (x,y))
# 3 - Update the main screen (redraw)
pygame.display.update()
私は明らかな間違いを犯しているに違いありませんが、それを理解することはできません。ball.set_colorkey(-1, RLEACCEL) を呼び出すと、ボール スプライトの左上隅の色 (たまたま黒) が取得され、それが「ブリットしない」ピクセルの色として使用されます。手順がありませんか?
ご協力いただきありがとうございます。