2016-01-22 52 views
1

我目前在pygame(Python 3)上製作遊戲,並且我想要在開始時播放一個小電影介紹。我在pygame.movi​​e模塊中遇到了幾個問題,類似的問題的解決方案似乎對我無效。是否有一種簡單的方法將MPG電影播放到預先存在的屏幕上?用特定分辨率的Python 3中的pygame播放電影

我嘗試下面的代碼:

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() 

但墜毀蟒蛇。當我嘗試

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() 

出現一個屏幕,出於某種原因充滿了綠色方塊。我做了什麼錯事?其次,我擁有的電影是480 * 360分辨率,而我玩遊戲的屏幕是640 * 480。我希望視頻佔據整個屏幕 - 是否有辦法做到這一點?

+0

問題措辭嚴重或只是一個「壞問題?出於某種原因,我沒有收到任何評論/回答.... –

回答

1

你可以運行在表面和屏幕

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在屏幕上渲染電影時非常模糊。如果屏幕尺寸不適合電影,則會崩潰。控制電影尺寸到目前爲止你有沒有運氣?