Jeg er ved at lave et spil.
I spillet skal der være lyde når man gør noget og musik i baggrund. Men jeg kan få den til at spille men når jeg skal få den til at spille en ny lyd. Stopper den afspillingen af den anden!!!
Og det duer bare ikke!!!
Sikke noget lort!
Men her er koden jeg bruger:
===
Public Declare Function sndPlaySound& Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long)
Public Declare Function sndPlayMusic& Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long)
Global Const SND_SYNC = &H0
Global Const SND_ASYNC = &H1
Global Const SND_NODEFAULT = &H2
Global Const SND_LOOP = &H8
Global Const SND_NOSTOP = &H10
Sub Playsound(SoundTP As String, Folder As String)
Dim SoundName$
Dim wFlags%
Dim bcolon As String
If Folder = "" Then
Else
bcolon = "\\"
End If
wFlags = SND_ASYNC Or SND_NODEFAULT
SoundName$ = App.Path + "\\sounds\\" + Folder + bcolon + SoundTP + ".wav"
x = sndPlaySound(SoundName$, wFlags%)
End Sub
Sub PlayMusic(ByVal MusicTP As String, ByVal DRN As Boolean)
Dim SoundName$
Dim wFlags%
If DRN = True Then
wFlags = SND_ASYNC Or SND_NODEFUALT
Else
wFlags = SND_ASYNC Or SND_LOOP
End If
SoundName$ = App.Path + "\\music\\" + MusicTP + ".wav"
x = sndPlayMusic(SoundName$, wFlags%)
End Sub
===
Koden her er i et modul som hedder game.
i koden skal jeg så bare skrive for at spille en lyd:
Playsound "(LYD)", "(LYD Mappe)"
og musik:
PlayMusic "(Nummer)", (Genstart når slut)
Men den kan bare ikke spille 2 lyde på en gang eller..?
Og hvis hvad gør jeg så?
---
En hånd på armen er bedre end to i skraldespanden!... ehh.. :/?
Fixed med DirectSound fra DirectX8.
Function Init() As Boolean
Dim DX As New DirectX8
Dim DS As DirectSound8
Dim Sound As DirectSoundSecondaryBuffer8
Dim SoundDesc As DSBUFFERDESC
Set DS = DX.DirectSoundCreate("")
If DS Is Nothing Then GoTo InitFailed
DS.SetCooperativeLevel hWnd, DSSCL_NORMAL
Set Sound = DS.CreateSoundBufferFromFile(App.Path & "\\sound.wav", SoundDesc)
If Sound Is Nothing Then GoTo InitFailed
Sound.Play DSBPLAY_DEFAULT
Init = True
Exit Function
InitFailed:
Init = False
Exit Function
End Sub
---
En hånd på armen er bedre end to i skraldespanden!... ehh.. :/?