我想在pygame中创建一个效果,其中曲面变慢。我试试这个:
在主循环中:
earth = pygame.transform.scale(earth, (int(earth.get_width()*0.9999), int(earth.get_height()*0.9999)))
如何开始
结局如何
我可以用哪种技术做到这一点?
谢谢!
`
答案 0 :(得分:1)
好几件事可以帮助
代码看起来像这样:
# time_start is when you start the shrinkage
# time_end is when the shrinkage should be completed
now = time.time()
if now < time_end:
shrinking = (time_end - now) / (time_end - time_start)
new_size = (int(earth.get_width()*shrinking),
int(earth.get_height()*shrinking))
earth_scaled = pygame.transform.scale(earth, new_size)
# draw earth_scaled
注意:当你的earth_scaled变小时,你可能还需要注意绘制它的位置。
对评论的回应
转型不是无损失的。每次变换都会使您的图像不那么完美。您可以获取工件,裁剪问题等。例如,在您的情况下,您将宽度和高度乘以小于1,然后使用int
将其截断。这将导致每次迭代缩小1个像素(除非你有一个疯狂的大图像)。将图像缩放到比开始时少1个像素宽度可能只会忽略其中一个像素列。如果你继续这样做,它将每次删除1列和1行。 (不是你想要的)。相反,如果您拍摄完整的图像并进行缩放,则缩放功能可以更好地选择省略或合并的内容。