2016-07-28 2 views
0

私は、IT部門の小さなディスプレイとなるPython 2.7.9とPygameの小さなスクリプトを作成しています。私たちの現在のステータス(イン・アウトなど)、学校でのプログラムに関する情報、ITスタッフのイメージなどを繰り返す短いビデオを再生するトグルスイッチがいくつかあるという考えがあります。 pygame.movi​​eが機能するようにコンパイルされたPygameのバージョンです。なぜイベント入力時にPygame Movie Rewindを行うのですか

スクリプトのすべての部分は機能しますが、.mpgの最後まで来ると、ステータスが切り替わるかマウスを動かすなど、EVENTが再生されるまでムービーは再生されません。 movie.get_timeで変数を定義しようとしましたが、特定の時刻に巻き戻しを呼び出すようにしましたが、ムービーは巻き戻されません(現在コメントアウトされています)。イベントを必要とせずにリピート時にムービーを再生する方法はありますか?または、特定の時間が経過するとイベントをスプーフィングすることができますか?(pygame.movi​​eのドキュメントは古く、ループ機能は機能しません)

ありがとうございました!

import pygame, sys, os, time, random 
from pygame.locals import * 
pygame.init() 

windowSurface = pygame.display.set_mode((0,0), pygame.FULLSCREEN) 

pygame.display.set_caption("DA IT Welcome Sign") 
pygame.font.get_default_font() 
bg = pygame.image.load('da.jpg') 
in_img = pygame.image.load('in.png') 
out_img = pygame.image.load('out.png') 
etc_img = pygame.image.load('etc.png') 
present = in_img 
done = False 
img = 1 
clock = pygame.time.Clock() 
movie = pygame.movie.Movie('wallace.mpg') 
movie_screen = pygame.Surface(movie.get_size()).convert() 
playing = movie.get_busy() 
movie.set_display(movie_screen) 
length = movie.get_length() 
currenttime = movie.get_time() 
movie.play() 

while not done: 
    for event in pygame.event.get(): 
     if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: 
      done = True 
     if event.type == pygame.QUIT: 
      movie.stop() 
      done = True 



     if event.type == pygame.KEYDOWN and event.key == pygame.K_1: 
      img = 1 
     if event.type == pygame.KEYDOWN and event.key == pygame.K_2: 
      img = 2 
     if event.type == pygame.KEYDOWN and event.key == pygame.K_3: 
      img = 3 
     if event.type == pygame.KEYDOWN and event.key == K_w: 
      pygame.display.set_mode((800, 600)) 
     if event.type == pygame.KEYDOWN and event.key == K_f: 
      pygame.display.set_mode((0, 0), pygame.FULLSCREEN)    
     if img == 1: 
      present = in_img 
     if img == 2: 
      present = out_img 
     if img == 3: 
      present = etc_img 
     if not(movie.get_busy()): 
      movie.rewind() 
      movie.play() 
     #movie.get_time() 
     #if currenttime == 25.0: 
     # movie.stop() 
     # movie.rewind() 
     # movie.play() 
    windowSurface.blit(bg, (0, 0)) 
    windowSurface.blit(movie_screen,(550,175)) 
    windowSurface.blit(present, (0,0)) 
    pygame.display.flip() 

答えて

0

現在のイベントを取得するforループからムービーを再生するには、コードを取得する必要があります。このコードと、コードを4スペース左に移動してイベントを待つことなく、連続して発生させたい他のコードに対してこれを行います。そのよう

:私はpygameのダウンロードで物事をやろうとしすぎている間、この問題に遭遇してきた

while not done: 
    for event in pygame.event.get(): #gets most recent event, only executes code below when there is an event 
     if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: 
      done = True 
     if event.type == pygame.QUIT: 
      movie.stop() 
      done = True 
     if event.type == pygame.KEYDOWN and event.key == pygame.K_1: 
      img = 1 
     if event.type == pygame.KEYDOWN and event.key == pygame.K_2: 
      img = 2 
     if event.type == pygame.KEYDOWN and event.key == pygame.K_3: 
      img = 3 
     if event.type == pygame.KEYDOWN and event.key == K_w: 
      pygame.display.set_mode((800, 600)) 
     if event.type == pygame.KEYDOWN and event.key == K_f: 
      pygame.display.set_mode((0, 0), pygame.FULLSCREEN)  
    #code below is out of the event for loop and thus executes whenever the while loop runs through  
    if img == 1: 
     present = in_img 
    if img == 2: 
     present = out_img 
    if img == 3: 
     present = etc_img 
    if not(movie.get_busy()): 
     movie.rewind() 
     movie.play() 
    #movie.get_time() 
    #if currenttime == 25.0: 
    # movie.stop() 
    # movie.rewind() 
    # movie.play() 
    windowSurface.blit(bg, (0, 0)) 
    windowSurface.blit(movie_screen,(550,175)) 
    windowSurface.blit(present, (0,0)) 
    pygame.display.flip() 

は、一般的なエラーのようです。

+0

ありがとうございました!問題が解決しました。私はときどき特定のpython/pygameがインデントの書式設定にどのようにあるのか忘れてしまいます。 – azaletel

関連する問題