我和pygame一起工作,我必须在图像中淡出
我试过网上的指南,但都不管用
我使用+=
,但是第一帧(fps设置为120,我使用fps1识别它)是完全透明的,而第二帧很快是完全不透明的。我需要一个淡入效果而不是这个
我有以下代码:
i = 0
for i in range (0, 255):
i = 0
i += 1
dvd.set_alpha(i)
screen.blit(dvd, dvdrect)
pygame.display.update()
下面这行不行
pygame.time.delay(30)
Tags:
这不是
for
循环的工作方式。您正在呼叫dvd.set_alpha(1)
255次也许你想用这个来代替:
它调用
dvd.set_alpha(0)
,然后dvd.set_alpha(1)
,然后dvd.set_alpha(2)
,…,然后dvd.set_alpha(254)
注意,它不调用
dvd.set_alpha(255)
,因为range
的上端是独占的我不知道
set_alpha
是否需要介于0和1之间的浮点,或者介于0和255之间的整数(或者256?)。如果是前者,当i
从0变为大约256时,需要调用类似dvd.set_alpha(i / 256)
的函数,将其缩放到0到1的范围内测量当前帧和最后一帧之间的时间,而不是执行i+=1。那将是你的三角洲。 现在,您只需将增量值乘以淡入度/秒值即可。在您的示例中,您似乎希望淡入度值为255/120,因此生成的线条为: i+=delta*255/120
这里可能发生的另一个问题是,alpha值可能是0.0到1.0之间的浮点/双精度值,因此在向其添加1后,它将完全不透明
在您的简单示例中,尝试添加1/255以查看是否获得预期结果
编辑:我的大脑完全忽略了这样一个事实:是的,你一直在将alpha设置为1。而不是做
我建议这样做
相关问题 更多 >
编程相关推荐