热线电话:13121318867

登录
2019-01-19 阅读量: 1104
使用区域参数时pygame surface.blits

我试图使用带有area参数的surface.blits来提高我的代码的性能。当我使用区域参数进行blits时,我遇到以下错误SystemError: <method 'blits' of 'pygame.Surface' objects> returned a result with an error set。如果我删除区域参数,blits就像我期望的那样工作。关于我可能做错的任何想法?下面附有一个示例代码我的用例和错误。

import sys

import random

import pygame

pygame.init()

tilemap = pygame.image.load('pattern.jpg')

tilesize = 64

size = 4

w, h = size*64, size*64

screen = pygame.display.set_mode((w, h))

while True:

screen.fill((0, 0, 0))

for event in pygame.event.get():

if event.type == pygame.QUIT:

sys.exit()

blit_list = []

for i in range(size):

for j in range(size):

xi, yi = random.randint(0, size), random.randint(0, size)

blit_args = (tilemap, (i*tilesize, j*tilesize),

(xi*tilesize, yi*tilesize, tilesize, tilesize))

# calling screen.blit here works correctly

screen.blit(*blit_args)

blit_list.append(blit_args)

# instead of using multiple blit calls above, calling screen.blits here fails

# remove the area argument (3rd arg) from each blit_arg tuple works

# screen.blits(blit_list)

我不知道导致错误的原因,但可以使用简单的try语句来处理异常:

try:

screen.blits(blit_list)

except:

pass

0.0000
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子