我目前正在 pygame (Python 3) 上制作一个游戏,我希望在开始时播放一个小电影介绍。我在 pygame.movie 模块上遇到了几个问题,类似问题的解决方案似乎对我不起作用。有没有一种简单的方法可以在现有屏幕上播放 MPG 电影?
我尝试了以下代码:
import pygame
pygame.init()
movie = pygame.movie.Movie('intro.mpg')
screen = pygame.display.set_mode(movie.get_size())
movie_screen = pygame.Surface(movie.get_size()).convert()
movie.set_display(movie_screen)
movie.play()
但这使Python崩溃了。当我尝试时
import pygame
FPS = 60
pygame.init()
clock = pygame.time.Clock()
movie = pygame.movie.Movie('intro.mpg')
screen = pygame.display.set_mode(movie.get_size())
movie_screen = pygame.Surface(movie.get_size()).convert()
movie.set_display(movie_screen)
movie.play()
playing = True
while playing:
for event in pygame.event.get():
if event.type == pygame.QUIT:
movie.stop()
playing = False
screen.blit(movie_screen,(0,0))
pygame.display.update()
clock.tick(FPS)
pygame.quit()
出现了一个屏幕,并且由于某种原因充满了绿色方 block 。我做错了什么?
其次,我的电影分辨率是480*360,而我玩游戏的屏幕是640*480。我想让视频占据整个屏幕 - 有办法做到这一点吗?
最佳答案
您可以在 Surface 和 Screen 中心运行视频
pygame.init()
clock = pygame.time.Clock()
FPS = 20
appActive = True
movie = pygame.movie.Movie('movie.mpg')
#full screen display
mainDisplay = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
offscreen = pygame.Surface(movie.get_size())
movie.set_display(offscreen)
center = offscreen.get_rect()
center.center = mainDisplay.get_rect().center
while appActive:
mainDisplay.blit(offscreen, center)
pygame.display.update()
clock.tick(FPS)
你的代码看起来没问题,我自己尝试了一下,成功了。我注意到 pygame 在屏幕上渲染电影时非常模糊。如果屏幕尺寸不适合电影,那么它就会崩溃。到目前为止,您在控制电影尺寸方面运气好吗?
关于python - 在Python 3中使用pygame以特定分辨率播放电影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34936847/