Seite 1 von 2

Movie als Hintergrund!

Verfasst: 06.04.2007 22:37
von D4uS1
Viel von uns kennen bestimmt Battlefield 2. In dem Menu läuft im Hintergrund ein Video. Genauso wollte ich es auch machen. Hab das Video wiedergeben lassen, die Buttons darüber geladen und schließlich alles mit flipbuffers()
beendet. Doch wenn ich nun das Programm starte dann bekomme ich das videio ungefähr jeden 2. Frame zu sehen, mit Streifen, Flimmern, usw. woran kann das liegen?

Beispielcode

Code: Alles auswählen


Repeat
ExamineKeyboard()
 
 PlayMovie(Menu, ScreenID())
 DisplayTransparentSprite(BUtton1, 0, 150)
 DisplayTransparentSprite(...)
...
...

FlipBuffers()

If Keyboardpushed(1)
  Beenden = 1
endif

Until Beenden = 1

Verfasst: 06.04.2007 23:36
von Fluid Byte

Code: Alles auswählen

RenderMovieFrame(#Movie, SpriteID)

Verfasst: 07.04.2007 19:32
von D4uS1
hab ich auch gemacht, hab aber immernoch die gleichen fehler,oder muss man für jedes bild, also auch die die über dem video stehen,diese zeile eintippen?

Verfasst: 07.04.2007 19:38
von Fluid Byte
Quelltext bitte!

Verfasst: 08.04.2007 20:24
von D4uS1
der ist zu lang. Aber ich habe das ganze auch mal ohne sprites, einfach auf einem bildschrim als test versucht. Es hat nicht geklappt!

Verfasst: 08.04.2007 20:58
von D4uS1
hier ist ein video mit dem fehler.
http://cod2-obstclan.de/PBVideofehler.wmv

hier ist der code zu dem test.

Code: Alles auswählen

InitSprite()
InitKeyboard()
InitMovie()

OpenScreen(1024, 768, 16, "Test")

LoadMovie(0, "Sounds/menu.wmv")

Repeat
ExamineKeyboard()

If MoviePlayed = 0
PlayMovie(0, ScreenID())
MoviePlayed = 1
EndIf



FlipBuffers()
Until KeyboardPushed(1)



Verfasst: 08.04.2007 21:41
von nco2k
kann sein dass der bug noch nicht gefixt wurde, kannst ja fred daran errinern, falls es wirklich so ist: http://www.purebasic.fr/english/viewtopic.php?t=17878

ansonsten als workaround:

Code: Alles auswählen

#Width = 1024
#Height = 768
#Depth = 16

If InitSprite() And InitMovie() And InitKeyboard() 
  
  File.s = OpenFileRequester("", "", "*.*", 0) 
  If File And LoadMovie(0, File) And OpenScreen(#Width, #Height, #Depth, "Test") 
    
    If CreateSprite(0, #Width, #Height) 
      
      PlayMovie(0, #PB_Movie_Rendered) 
      
      Repeat 
        Delay(10) 
        
        RenderMovieFrame(0, SpriteID(0)) 
        DisplaySprite(0, 0, 0) 
        FlipBuffers(2) 
        
        ExamineKeyboard() 
      Until KeyboardPushed(#PB_Key_Escape) 
      
    EndIf 
    
  EndIf 
  
EndIf
c ya,
nco2k

Verfasst: 08.04.2007 21:41
von Fluid Byte
Uhmm, wo ist die Stelle wo du RenderMovieFrame() verwendest?

Verfasst: 08.04.2007 22:08
von D4uS1
RenderMovieFrame hab ich in meinem originalcode, das was ich hier geschickt habe ist der test mit dem ich festgestellt habe das der fehler nicht an meinem code liegt. Ausserdem muss man RendermovieFrame nur einsetzen um ein Video mit Sprites zu rendern, ohne Sprites bracuht man das doch nicht, oder?

Verfasst: 08.04.2007 22:18
von Fluid Byte
St@ndFurz hat geschrieben:RenderMovieFrame hab ich in meinem originalcode, das was ich hier geschickt habe ist der test mit dem ich festgestellt habe das der fehler nicht an meinem code liegt. Ausserdem muss man RendermovieFrame nur einsetzen um ein Video mit Sprites zu rendern, ohne Sprites bracuht man das doch nicht, oder?
Ich fasse noch mal kurz zusammen:

- Du willst ein Movie auf einem Screen abspielen
- Beim Abspielen gibst es Darstellungsprobleme
- Die Darstellungsprobleme ergeben sich durch die Tatsache das das Abspielen in einem Screen nicht von PB unterstützt wird (kein Bug)
- Ich habe dir zu RenderMovieFrame geraten weil es damit (jedenfalls bei mir) keine Probleme gibt + diverse nette Effkete wie z.B. Transparenz