How to change music on different backgrounds

Monkey Forums/Monkey Beginners/How to change music on different backgrounds

En929(Posted 2014) [#1]
I was wondering get different background music on different backgrounds with the code I wrote below? I think I wrote the code below incorrectly




Strict

Import mojo


Class MyApp Extends App

	Field BackGround1: Bool = True 
	Field BackGround2: Bool = False 
	
	

	
	Method OnCreate:Int()
	

		SetUpdateRate(60)
		Return True
	End

	
	Method OnUpdate:Int()
	
			If BackGround1 Then
			
			     PlayMusic("In_Game_Rock.wav")
			
					If KeyDown(KEY_ENTER) Then
					
					BackGround1= False
					BackGround2 = True
					
					End
				
			
			End
			
			If BackGround2 Then
			
			
			     PlayMusic("DrumCorpsVideoMusic.wav")
			
			End
			
			
		
			Return True
	End


	
	Method OnRender:Int()
		Cls(80.80,80)

		Return True
	End
End



Function Main:Int()
	New MyApp()
	Return True
End




therevills(Posted 2014) [#2]
What actually happens? It looks okay... apart from your Cls... it has a period instead of a comma.

Maybe try StopMusic() in your KeyDown If statement.


Raz(Posted 2014) [#3]
If BackGround2 Then
			
			
     PlayMusic("DrumCorpsVideoMusic.wav")
			
End

To me, it seems like it's trying to start playing a music track every single frame, so 60 times a second in the above. If I were you I would have a method that changes the music based on a value.

Field currentTrack:Int
Method ChangeMusic:Void(newTrack:Int)

    currentTrack = newTrack

    Select newTrack
    Case 0:
        PlayMusic("In_Game_Rock.wav")
    Case 1:
        PlayMusic("DrumCorpsVideoMusic.wav")
    Default:
        Error "ChangeMusic() tried to play an invalid track : " + newTrack
    End
End

Method OnUpdate:Int()

    If KeyHit(KEY_ENTER)
        If currentTrack = 0
              ChangeMusic(1)
        ElseIf currentTrack = 1
              ChangeMusic(0)
       End
    End

    Return 0

End



Paul - Taiphoz(Posted 2014) [#4]
What you need to do is check MusicState() 0/1 which checks the Music Channel, then do something like.

If MusicState()=0 then PlayMusic()


Just be sure that when you do a track change that you StopMusic() the current track.


Gerry Quinn(Posted 2014) [#5]
I'd probably have something like:




En929(Posted 2014) [#6]
Thanks for the help. I got the methods that you all mentioned to work. Other than the music, I almost have a game up and running (after just a week of learning Monkey X). Thanks again.


Paul - Taiphoz(Posted 2014) [#7]
happy to be of some help, cant wait to see what your working on :)