Seite 1 von 1

musik immer wieder abspielen

Verfasst: 06.05.2006 21:49
von Svking
Hallo,
kann mir jemand erklären, wie ich die PlayMovie() mehrmals hintereinander abspielen kann?
also wenn das Lied fertig ist, dass es dann neu anfängt?

Ich brauche nämlich eine Hintergrundmusik zu meinem Spiel und das ist doof, wenn die plötzlich aus ist.

Verfasst: 06.05.2006 22:33
von benpicco
Starte es erneut, wen MovieStatus()=0.
Das funktioniert aber nicht immer, sicher ist

Code: Alles auswählen

If MovieStatus()=OldState
PlayMovie(#Mivie,WindowID)
endif
OldState=MovieStatus()

Verfasst: 10.05.2006 22:35
von DoubleID
Wenn es kleine Musikloops sind kannst du sie auch per PlaySound ausgeben.

PlaySound(#SoundID,1)

Der Parameter 1 steht für das automatische Wiederholen.

Verfasst: 11.05.2006 20:21
von Alves
Ich hab son ähnliches Problem, allerdings will ich dann noch mit NextSelectedFileName() arbeiten. Hier mal mein Codeschnipsel:

Code: Alles auswählen

Case #ButtonImage_0    
         PlayMovie(0,#Window_0)
           If MovieStatus()=Oldstate
             file$=NextSelectedFileName()
             PlayMovie(0,#Window_0)
           EndIf
Ich arbeite mit MultiToggle beim OpenFileRequester() und er spielt nur das eine Movie und hört dann auf.

Verfasst: 11.05.2006 20:37
von DoubleID
Du mußt die Musik schon auch laden.

Verfasst: 11.05.2006 20:53
von Alves
Muss ich die bei jedem NextSelectedFileName neu laden?
Mein Code sihet jetzt so aus, geht aber auch nich:

Code: Alles auswählen

Case #ButtonImage_0    
         If MovieStatus()=-1
           ResumeMovie()
         Else    
           LoadMovie(0,file$)
           PlayMovie(0,#Window_0)
         EndIf  
         If MovieStatus()=0
           file$=NextSelectedFileName()
           LoadMovie(0,file$)
           PlayMovie(0,#Window_0)
         EndIf

Verfasst: 14.05.2006 11:22
von Jilocasin
Hab noch nen Vorschlag:

Damit musst du nich mal mehr in der Schleife abfragen, ob die Musik fertig ist:

Code: Alles auswählen

Dim MovieLoaded.b(10) ; Eigentlich 11 Plätze, aber egal...
Global MovieLoaded

Procedure CheckMusic()
  Repeat
    Delay(1000)
    
    For number = 0 To 10
      If MovieLoaded(number)
        
        UseMovie(number)
        If MovieStatus() = 0
          PlayMovie(number,ScreenID())
        EndIf
        
      EndIf
    Next
    
  ForEver
EndProcedure

MuzID = CreateThread(@CheckMusic(),0)
ThreadPriority(MuzID,5)


Procedure SetBackgroundMusic(number,file.s)
  ; Darf erst aufgerufen werden, WENN ein Screen OFFEN ist!!!
  If file ; Laden...
    MovieLoaded(number) = 0
    LoadMovie(number,"SND\Music\"+file.s+".mp3")
    PlayMovie(number,ScreenID())
    MovieLoaded(number) = 1
  Else ; Freigeben...
    MovieLoaded(number) = 0
    FreeMovie(number)
  EndIf
EndProcedure

Verfasst: 15.05.2006 12:43
von Svking
thx für die schnellen Antworten

hab das jetzt mit PlaySound(name,1)
gemacht und funzt perfect x)


--
Sv