目录
前言
video模块(已失效)
导入图片
阿尔法(alpha)通道
播放BGM
同步播放
这是一次0基础萌新的尝试 (。・ω・)ノ゙
之前一直在学C++,但是这台电脑貌似主打一个油盐不进,Java,C++之类的语言搭建环境一直不成功,只有Python勉强能用,所以目前实践环节……只能留给Python了( ̄~ ̄;)
让程序在窗口内产生简单的动画效果,似乎比什么输密码之类的有意思多了?
(代码块已略去import及初始化过程)
video功能是我想到的第一种比较直接的一种方法,毕竟直接拿原视频糊弄人...也不是不行?
screen = pygame.display.set_mode((640, 480))# 创建Pygame显示窗口
video = pygame.movie.Movie("video.mp4")# 加载文件
video.play()# 播放视频
while video.get_busy(): # 等待视频播放结束
for event in pygame.event.get(): # 处理Pygame事件
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
screen.blit(video.get_surface(), (0, 0)) # 将视频帧绘制到屏幕上
pygame.display.flip()
但是video在Python3貌似已经被移除了,所以...看到“Movie”黄色高亮 的时候已经感觉大事不妙了
文字动画效果在特殊字体缺失时,观赏性不能说大幅下降,至少也是不堪入目......(*/ω\*)
所以决定直接用图片渐变显示来达到效果
先拿张图 ↓(水印是系统加的,删不掉了)
import pygame
pygame.init() # 初始化
window = pygame.display.set_mode((1080, 640)) # 创建自定义大小的窗口(1080*640)
pygame.display.set_caption('Genshin Impact') # 设定了一个标题
window.fill((255, 255, 255)) # 窗口背景颜色,注意是RGB格式(此处为白)
在显示图片前,应先初始化pygame并构建窗口 ,然后导入图片;
image1 = pygame.image.load('Files/SPLASH.jpg') # 加载图片
window.blit(image1, (0, 0)) # 进行渲染
pygame.display.flip() # 顺带着刷新一下
图片导入成功,不代表就能直接显示,需要使用window.blit()来对图片进行渲染,括号内格式为(渲染对象, (横坐标,纵坐标)),横纵坐标相对左上角而言,左上角为(0,0)
display.flip()仅限于第一次使用,如果是后续刷新,把flip换为update即可
w, h = image1.get_size()# 定义了w,h作为宽,高;
定义了w,h作为宽,高;在涉及坐标的计算中,也可以直接使用已定义的宽高。
(如:1280-w,720-h)
set_alpha可用于调节图片透明度,用下方的for循环可达到图片渐变效果,最终实现图片淡入
for a in range(1000):
clock.tick(30)
window.fill((255, 255, 255))
if v == 50:
picture.set_alpha(a*2)
else:
picture.set_alpha(255-a*10)
某两字游戏的标题会在音乐达到某小节高潮时展示标题,因此我们应该使其保持同步,但当务之急是先让音乐能够正常播放
pygame.mixer.pre_init() # 初始化
pygame.mixer.music.load('Files/启动背景音乐.mp3') # 导入
pygame.mixer.music.play(-1) # 单曲循环
pygame.mixer.music.play(),括号内填写的是在播放完一次后,再进行重复播放的次数
如果是 -1,则为单曲循环
pygame.time.delay()可设置在延迟一定时间(以毫秒计)后执行下一步。
这里的音频文件在第47秒才会迎来高潮,所以delay的时间应为47000ms,即47s。
clock = pygame.time.Clock()
time_passed = clock.tick(6000)
pygame.time.delay(47000)
(其实就是最开始的动图)