我正在用python创建游戏,并希望使敌人以任何方式受到破坏时都闪烁白色。为此,我尝试使用特殊的混合标志将敌人扫向屏幕。但是,我不知道如何指定图像应与哪种颜色和Alpha值混合。当我尝试在BLEND_RGBA_ADD之后添加RGBA的值时,它会产生错误“ TypeError:'int'对象不可调用”,由于颜色必须为int,所以我无法理解。
if (thrd_join(thrd, NULL) != thrd_success)
rd_kafka_log(rk, LOG_ERR, "DESTROY",
"Failed to join main thread: %s "
"(was process forked?)",
rd_strerror(errno));
答案 0 :(得分:0)
pygame.BLEND_RGBA_ADD
是一个常量整数,因此您不能将参数传递给它。当您将其作为special_flags
或Surface.blit
的{{1}}参数传递时,将使用addition混合模式进行填充/填充。如果要使图像更亮,则可以将其填充为非黑色,并使用0作为Alpha值,以使Alpha通道不受影响。 (在此示例中,按 A 可以提高亮度。)
Surface.fill
请注意,import pygame as py
py.init()
clock = py.time.Clock()
screen = py.display.set_mode((400, 700))
image = py.image.load('image.png').convert_alpha()
while True:
clock.tick(60)
for event in py.event.get():
if event.type == py.QUIT:
py.quit()
exit()
if event.type == py.KEYDOWN and event.key == py.K_a:
image.fill((100, 100, 100, 0), special_flags=py.BLEND_RGBA_ADD)
screen.fill((0,0,0))
screen.blit(image, (100,100))
py.display.flip()
的表面将改变原始表面。我认为您实际要做的是在物体损坏时将图像换成更亮的版本。
在while循环之前创建明亮版本,或加载图像的另一个版本,然后通过将当前图像分配给另一个变量来交换它。 (顺便说一下,请致电fill
或convert()
来大幅度提高blit的性能。)
convert_alpha()