Seite 1 von 1

Movie endlos abspielen

Verfasst: 13.09.2004 15:07
von Tooom
hallo erstmal, ich bin noch neu im forum und hab schon die erste Frage:
Ich hab jetzt meine erste Hintergrundmusik im midi-Format, die will ich natürlich endlos lange abspielen, aebr bei mir hört si e immer nach ein Mal auf. :(
Was muss ich machen, damit sie weiterspielt?

Verfasst: 13.09.2004 15:15
von Deeem2031
Also entweder du benutzt die FMod.dll oder machst das so wie ich das mal gemacht hab, als ich bei "Auroria" (das mit Nils, fals sich jemand erinnert ^^) das selbe Problem hatte:

Code: Alles auswählen

Global StopThreads.l

Procedure repeatmovie(movie.l)
  Repeat
    UseMovie(movie)
    If MovieStatus() <= 0
      PlayMovie(movie,WindowID())
    EndIf
    Delay(100)
  Until StopThreads = 1
EndProcedure

CreateThread(@repeatmovie(),0)

...

StopThreads = 1

Verfasst: 13.09.2004 15:15
von sbehrens
Hi Tooom,

versuch es mal mit:

Code: Alles auswählen

MovieStatus()
steht auch in der Hilfe!

mfG
Basti

//edit: Mist, Deeem war schneller...

Verfasst: 13.09.2004 18:11
von Lars
Deeem :o

UseMovie() und Thread in Kombination sind BÖÖÖÖSE!

Da sollte man wenigstens drauf hinweisen!

Verfasst: 13.09.2004 18:57
von sbehrens
Ich hoffe das hilft:

Code: Alles auswählen

;Beispielcode fuer unendliches spielen einer audiodatei
If InitMovie()
  If OpenWindow(0,100,100,100,100,#PB_Window_SystemMenu,"loop music files")
    movie$=OpenFileRequester("","","Musicfile | *.mid;*.midi;*.mp3;;*.ogg;*.wma",0)
    ;movie laden
    LoadMovie(0,movie$)
    ;movie abspielen
    PlayMovie(0,WindowID())
    Repeat
      ;falls "das movie" gestoppt ist (bzw. auch wenn es vorbei ist vorbei ist)...
      If MovieStatus()=0
        ;"das movie" wieder aspielen
        PlayMovie(0,WindowID())
      EndIf
      Delay(20)
    Until WindowEvent()=#PB_Event_CloseWindow
  EndIf
Else
  MessageRequester("Error","InitMovie()")
EndIf
Sollte eigentlich funzen! (Allerdings habe ich es nicht mit Midi ausprobiert)

mfG
Basti

//edit: Hab's getestet, funzt mit *.midi (war mir vorher nicht sicher)

Verfasst: 13.09.2004 20:42
von Deeem2031
Lars hat geschrieben:Deeem :o

UseMovie() und Thread in Kombination sind BÖÖÖÖSE!

Da sollte man wenigstens drauf hinweisen!
Hm, stimmt is mir garnicht so aufgefallen, liegt aber vielleicht auch daran das ich nur ein Movie bei dem Spiel geladen hab ^^
Also, sorry für meinen scheiß Code.
Wieso hat MovieStatus() eigentlich keinen Parameter? son müll ...

Verfasst: 13.09.2004 22:01
von Lars
Die ganze UseXXXX() Sache ist Müll, nur um das mal zu bemerken :)

Verfasst: 14.09.2004 14:29
von sbehrens
Lars hat geschrieben:Die ganze UseXXXX() Sache ist Müll, nur um das mal zu bemerken :)
Meinst du man sollte anstatt

Code: Alles auswählen

UseWindow()
das:

Code: Alles auswählen

WindowID=OpenWindow(...)
...
benutzen? Warum ist das mit UseXXXX() denn Müll... ist das zu langsam?

mfG
Basti

Verfasst: 14.09.2004 17:39
von Lars
ptI hat geschrieben:Warum ist das mit UseXXXX() denn Müll?
Weil es
1.) unheitlich ist. Bleiben wir beim Beispiel der Movie Lib: PlayMovie
erwartet einen #MovieID Parameter, sow eit ich jetzt gesehen habe alle
anderen Befehle nicht.

2.) in Threads nicht zu gebrauchen ist, wie obiges Beispiel zeigt.

Außerdem ist es in meinen Augen unsinnig, erst mit einem extra Befehl zu
spezifizieren, mit welchen Objekt jetzt etwas geschehen soll - imho ist
eine Angabe als Parameter viel sinnvoller.

ptI hat geschrieben:Meinst du man sollte anstatt [c]UseWindow() WindowID=OpenWindow()[/c] benutzen?
Nein, das meinte ich nicht. Ich bezog mich damit auf die Befehle, die ein
vorher in einem extra Befehl spezifiziertes Objekt beziehen.

Das was du meinst, ist auch ein wenig unsinnig, aber nicht weiter
schlimm; ein XXXXID(#ID) Befehl wäre sinnvoller, der ImageID()
Befehl erwartet ein vorhergehendes UseImage(), das aber auch schon die
gesuchte ID zurück gibt, von daher ist ImageID() in vielen Fällen unnötig.