oh great, now i feel like an idiot!
Blitz3D Forums/Blitz3D Beginners Area/oh great, now i feel like an idiot!
| ||
| I've been stumped by something that should be simple, something that was very simple on a Pygame engine (python made graphic). How would i go about looping the same sound while a key is held down? I can get it to play, but unfortunately, it bombs it about 1000 times a second, every time the loop processes. Ouch. I can also get it to loop once the key is hit, but I can't STOP looping it, once the key is no longer held down. I'm afraid to use the "freesound" command, cause loading and freeing a sound every time a key is held, could really bog up the harddrive. Any help is appreciated. Thanks :D |
| ||
| You need to use the SoundChannel commands. |
| ||
mySoundPlaying=False
mySound=LoadSound("mySample.wav")
LoopSound mySound
While Not KeyHit(1)
If KeyDown(57); SPACE KEY
If mySoundPlaying=False
myChannel=PlaySound(mySound)
mySoundPlaying=True
EndIf
Else
StopChannel myChannel
mySoundPlaying=False
EndIf
Wend
FreeSound mySound
|
| ||
| great! at first it didn't work, so i went around tinkering with a few things, i'm not sure what i did, but it worked! thanks! |
| ||
| great! at first it didn't work That's odd -- it should just need LoadSound pointing towards a legitimate wav file. No matter... glad you're sorted. |
| ||
Why not use ChannelPlaying() instead of using a separate var:mySound=LoadSound("mySample.wav")
LoopSound mySound
While Not KeyHit(1)
If KeyDown(57); SPACE KEY
If Not ChannelPlaying(myChannel)
myChannel=PlaySound(mySound)
EndIf
Else
If ChannelPlaying(myChannel)
StopChannel myChannel
EndIf
EndIf
Wend
FreeSound mySound |
| ||
| Why not use ChannelPlaying() instead of using a separate var Because he might eventually want to restrict several sounds to the same channel and manage their priority manually. |