Video anzeigen mit Hindernissen // gelöst

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Xenos
Beiträge: 114
Registriert: 24.01.2006 20:33
Wohnort: Dresden(hin und wieder)
Kontaktdaten:

Video anzeigen mit Hindernissen // gelöst

Beitrag von Xenos »

Hallo Leute!
Bei dem Versuch ein Video anzuzeigen und gleichzeitig den nicht vom Video eingenommenen Bildschirmplatz mit Farbe zu füllen bin ich auf das Problem gestoßen, dass sich der Befehl PlayMovie() irgendwie nicht mit den anderen Spritebefehlen zu vertragen scheint.
Hier mein Code:

Code: Alles auswählen

;{ Initialisierungen }
;-Initialisierungen


;Alles Initialisiert, was notwendig

;}


; Noch ein bisschen Quelltext


;{ Prozedurdeklarationen }
;-Prozedurdeklarationen

Declare.l ShowPreview()
;} 

OpenWindow(0,0,0,1024,768,"Testfenster",#PB_Window_BorderLess|#PB_Window_ScreenCentered| #PB_Window_Maximize)
OpenWindowedScreen(WindowID(0),0,0,1024,768,0,0,0)

;Noch etwas diverser Quelltext

;{ Hauptschleife }
 Repeat

;Quelltext bla blub trallala - unter anderem ein paar lustige
; Sprites malen und mit der Maus spielen

ShowPreview()  
   
 Until end_prog =1 ; end_prog ist ne Variable, aus dem Quelltext oben
;}

;-Ende
End




Procedure ShowPreview()
;-Prozedur ShowPreviev()


          ;{ Video laden }
              If LoadMovie(0,"Preview.avi")
              ResizeMovie(0,112,84,800,600) ;sollte auf jeden Fall ausgeführt werden!
            ;}
          ;{ Video zeigen } 
           ; Hier habe ich es mit ClearScreen(0) versucht
           PlayMovie(0,ScreenID())
          ;Hier auch
           StartDrawing(WindowOutput(0))
           DrawText(112, 700,"Ende mit beliebiger Taste",$FFFFFF,0)
           StopDrawing()
             ;Jetzt sollte das Video laufen...    Und der Text zu sehen sein
             ;funktioniert auch - nur dass man halt den Rest in schönem  
             ;Windows- Grau sieht (je nach Einstellung)  
            
            Repeat
                   ExamineKeyboard()
            Until    KeyboardReleased(#PB_Key_All)
            StopMovie(0)
            FreeMovie(0)
            EndIf
            ;}

ProcedureReturn 
EndProcedure
Ich habe keine Ahnung, was ich falsch mache. Ich habe es alternativ mit dem Box(...)-Befehl versucht, aber dann ist das Video nicht zu sehen, auch wenn ich zuerst den Kasten male und dann das Video starte.

Hat jemand ne Idee?
Zuletzt geändert von Xenos am 19.08.2006 22:26, insgesamt 2-mal geändert.
gô ni itte wa gô ni shitagae.
(Wenn du in ein Dorf kommst, richte dich nach seinen Gepflogenheiten - jap. Sprichwort.)
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

hmm .. movies kannst Du u.U. auch auf ein Sprite rendern.
Guck mal in der Hilfe nach RenderMovieFrame()

Damit sollten eigentlich keine Probleme auftauchen

all4PB4
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Xenos
Beiträge: 114
Registriert: 24.01.2006 20:33
Wohnort: Dresden(hin und wieder)
Kontaktdaten:

Beitrag von Xenos »

Müsste ich mal probieren...
Allerdings: Frisst das nicht enorme Leistungsreserven?

Immerhin ist das Ding 800x600 Pixel groß.
gô ni itte wa gô ni shitagae.
(Wenn du in ein Dorf kommst, richte dich nach seinen Gepflogenheiten - jap. Sprichwort.)
Benutzeravatar
#NULL
Beiträge: 2239
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

bin mir nicht sicher aber zeichne den text mal auf ScreenOutput() statt auf WindowOutput(). vielleicht brauchst du dafür auch noch eine schleife, die den text immer wieder neu zeichnet.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Xenos
Beiträge: 114
Registriert: 24.01.2006 20:33
Wohnort: Dresden(hin und wieder)
Kontaktdaten:

Beitrag von Xenos »

Habe ich schon in diversen Varianten probier, mit und ohne FlipBuffer() hat leider den Effekt, dass das Video immer verschwindet (ich vermute mal im Backbuffer) weiß jemand, wie diese Video-Routine arbeitet?
gô ni itte wa gô ni shitagae.
(Wenn du in ein Dorf kommst, richte dich nach seinen Gepflogenheiten - jap. Sprichwort.)
Benutzeravatar
#NULL
Beiträge: 2239
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

so geht's

Code: Alles auswählen

Enumeration
  #Win
  #Vid
  #SprtVid
  #SprtTxt
EndEnumeration

InitSprite()
InitMovie()
LoadMovie(#Vid, "E:\mugge\Devin Townsend\Terria\Disk 2\DEVON (E)\MPEG\001SeventhWave.mpg")
hWin=OpenWindow(#Win, 50,50,400,400, "")
OpenWindowedScreen( hWin, 0,0,400,400, 0,0,0)

CreateSprite(#SprtVid, MovieWidth(#Vid),MovieHeight(#Vid) )
CreateSprite(#SprtTxt, 100,20 )
  StartDrawing( SpriteOutput(#SprtTxt) )
    DrawingMode(#PB_2DDrawing_Transparent)
    DrawText(0,0, "ohh yeeaahhh!!!", $ffffff)
  StopDrawing()

PlayMovie(#Vid, #PB_Movie_Rendered )
Repeat
  RenderMovieFrame(#Vid,SpriteID(#SprtVid) )
  DisplaySprite(#SprtVid,0,0)
  DisplaySprite(#SprtTxt,150,20)
  event=WindowEvent()
  Select event
    Case #PB_Event_CloseWindow
      quit=1
  EndSelect
  FlipBuffers()
Until quit
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

so richtig transparent wird's aber erst mit

Code: Alles auswählen

DisplayTransparentSprite(#SprtTxt,150,20) 
:allright:
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
#NULL
Beiträge: 2239
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ja, stimmt. hab ich gar nich beachtet, weil mein video da dunkel war... :allright:
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Xenos
Beiträge: 114
Registriert: 24.01.2006 20:33
Wohnort: Dresden(hin und wieder)
Kontaktdaten:

Beitrag von Xenos »

Danke Leute, probier ich gleich mal aus! :D

[edit]
funktioniert ganz wundervoll, selbst bei 800x600 als Videoausmaß.:allright:
vielen herzlichen Dank! <)
gô ni itte wa gô ni shitagae.
(Wenn du in ein Dorf kommst, richte dich nach seinen Gepflogenheiten - jap. Sprichwort.)
Antworten