Python 错误:描述符';blit&x27;需要一个';pygame.Surface';对象,但收到一个';非类型';
我正在创造一个游戏。我编写此代码是为了创建一个精灵及其hitbox:Python 错误:描述符';blit&x27;需要一个';pygame.Surface';对象,但收到一个';非类型';,python,pygame,Python,Pygame,我正在创造一个游戏。我编写此代码是为了创建一个精灵及其hitbox: hg = pygame.image.load('hgrd1copy.jpg').set_colorkey(red) hgbox = pygame.Rect(0 ,13 ,36 ,72) pygame.Surface.blit(hg, hgbox) 我原来把 windowSurface.blit(hg, hgbox) 但后来我得到了一个错误,告诉我我的参数必须是pygame.Surface而不是none 但是,当我将代码更改
hg = pygame.image.load('hgrd1copy.jpg').set_colorkey(red)
hgbox = pygame.Rect(0 ,13 ,36 ,72)
pygame.Surface.blit(hg, hgbox)
我原来把
windowSurface.blit(hg, hgbox)
但后来我得到了一个错误,告诉我我的参数必须是pygame.Surface
而不是none
但是,当我将代码更改为pygame.Surface.blit
时,它给出了以下错误代码:
TypeError:描述符“blit”需要一个“pygame.Surface”对象,但收到了一个“NoneType”
我该怎么办?如命令中所述-y9u必须将图像加载到一行代码中,然后在另一行调用读取图像时的
set\u colorkey
方法。对于它们,blit
应该作为一个方法从现有的曲面调用,而不是从surface
类调用。(现在的问题是代码,程序如何“知道”将图像blit到哪里
因此,假设您的屏幕位于您所描述的windowSurface
变量上,这应该可以工作:
hg = pygame.image.load('hgrd1copy.jpg')
hg.set_colorkey(red)
hgbox = pygame.Rect(0, 13, 36, 72)
windowSurface.blit(hg, hgbox)
正如commemts中所解释的,y9u必须在一行代码中加载图像,并在另一行调用读取图像的
set\u colorkey
方法。并且,对于这些方法,blit
应作为现有曲面的方法调用,而不是从曲面
类调用。(现在的问题是代码,程序如何“知道”将图像blit到哪里
因此,假设您的屏幕位于您所描述的windowSurface
变量上,这应该可以工作:
hg = pygame.image.load('hgrd1copy.jpg')
hg.set_colorkey(red)
hgbox = pygame.Rect(0, 13, 36, 72)
windowSurface.blit(hg, hgbox)
…修复代码,使
hg
不是None
hg
是None
,因为set\u colorkey(红色)
不会返回pygame.Surface
对象。您可以验证from(->None
表示返回类型是None
)。要修复此问题,只需在一行上执行“图像加载”(以便hg
获取返回的曲面)和它自己行上的“颜色键设置”(例如hg.set\u colorkey(红色)
)!…修复代码,使hg
不是None
hg
是None
,因为set\u colorkey(红色)
没有返回pygame.Surface
对象。您可以验证from(->None
表示返回类型为None
)。要解决此问题,只需在一行上执行“图像加载”(以便hg
获取返回的曲面)并在其自身行上执行“颜色键设置”(例如hg.set\u colorkey(红色)
)!我将set_colorkey
移到了另一行,这解决了我以前的问题,但现在当我运行程序时,红色实际上没有被去掉。我已检查图片文件上的红色和程序的定义是否都是(255,0,0)。你知道为什么会这样吗?我将set_colorkey
移到了另一行,这解决了我以前的问题,但现在当我运行程序时,红色实际上没有被去掉。我已经检查了图片文件上的红色和程序的定义都是(255,0,0)。你知道为什么会这样吗?