| channel - channel handle returned by PlaySound or PlayMusic |
|
Stops a playing channel for good. Every sound that has to end on your terms rather than its own goes through here: the music when the player leaves a level, an engine loop when the car is destroyed, a siren when the alarm is cleared, an ambience when a door closes behind you. Anything started with LoopSound will run forever otherwise, so this is the only way out of a loop. It is a Channel command, so it needs the handle you kept from PlaySound or PlayMusic. If you did not keep the handle you cannot stop the sound - the usual fix is to store the channel for anything long-running and ignore the return value only for one-shot effects. Stopping is final. Unlike PauseChannel, which holds the playback so ResumeChannel can pick it up again, a stopped channel cannot be restarted - play the sound again to get a new channel. ChannelPlaying reports False afterwards. It stops the playback, not the sound in memory, so the loaded sound is still there to play again. Calling it on a channel that has already finished is harmless. It works on any channel, whether it came from a sound effect or from PlayMusic. See also: PauseChannel, ResumeChannel, ChannelPlaying, PlaySound, FreeSound. |
; StopChannel Example
; -------------------
Graphics 640,480,0,2
SetBuffer BackBuffer()
; A short tone looped endlessly - it will hum forever unless stopped
snd=LoadSound("media/beep.wav")
LoopSound snd
channel=PlaySound(snd)
While Not KeyDown(1)
; S stops the channel dead. Unlike PauseChannel there is no
; resuming - the channel is finished for good.
If KeyHit(31) Then StopChannel channel
; Space starts a fresh looping channel with PlaySound
If KeyHit(57) Then
StopChannel channel
channel=PlaySound(snd)
End If
; ChannelPlaying confirms the stop: 1 while humming, 0 after
playing=ChannelPlaying(channel)
Cls
If playing Then
Color 80,255,80
Oval 296,190,48,48,True
Color 255,255,255
Text 320,260,"channel humming - ChannelPlaying = 1",True
Else
Color 70,70,70
Oval 296,190,48,48,False
Color 160,160,160
Text 320,260,"stopped - ChannelPlaying = 0",True
End If
Color 255,255,255
Text 0,0,"S: StopChannel Space: start a new loop Esc: exit"
Flip
Wend
StopChannel channel
End