Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: WAVin soitto ei onnistu

ttuoppi [12.12.2004 11:24:15]

#

Declare Function mciSendString Lib "winmm.dll" Alias _
    "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
    lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal _
    hwndCallback As Long) As Long

 i = mciSendString("open" & App.Path & "Musiikit\Friend.wav type waveaudio alias Friend", 0&, 0, 0)

 i = mciSendString("play Friend", 0&, 0, 0)

Tuolla koodilla yritin saada soimaan musiikkia, mutten onnistunut. Ylin koodinpätkä on tietysti moduulissa, muut formissa. Kun ajan koodin, ei tapahdu mitään. Mikähän voisi olla ongelman syy? Käytössä on VB 6.

Antti Laaksonen [12.12.2004 12:03:43]

#

Ainakin open-sanan jälkeen täytyy tulla väli ja hakemistopolun jatketta ennen on oltava kenoviiva. Jos tarkoitus on vain soittaa WAV-tiedosto, käytä ennemmin sndPlaySound-funktiota (lisätietoa haulla).

ttuoppi [12.12.2004 17:09:18]

#

i = mciSendString("open " & App.Path & "\Musiikit\Friend.wav type waveaudio alias Friend", 0&, 0, 0)

i = mciSendString("play Friend", 0&, 0, 0)

Edelleenkään ei toimi, vaikka olen tarkistanut myös että hakemisto \Musiikit\Friend.wav todellakin löytyy.

Antti Laaksonen [12.12.2004 19:05:55]

#

Funktio on toisinaan nirso tiedostojen nimien suhteen. Muuta soitettavan tiedoston nimi lyhyeen muotoon WinAPIn GetShortPathName-funktion avulla (esimerkki löytyy haulla). Kokeile myös käynnistää kone uudestaan, koska avattuja tiedostoja on saattanut jäädä kummittelemaan muistiin.

ttuoppi [12.12.2004 19:14:09]

#

Rupesin käyttämään sittenkin sndPlaySound-funktiota, ja sain heti toimimaan. Kinnostaisi vain tietää miten sndPlaySoundilla saa musiikin pysähtymään?

Antti Laaksonen [12.12.2004 19:30:40]

#

Tuo menetelmä sopii lähinnä lyhyiden ääniefektien soittamiseen, pelin taustamusiikki kannattaa toteuttaa muulla tavalla. Pelin koon pitämiseksi kohtuullisena voisit esimerkiksi tallentaa musiikin MP3-muotoon. Huono idea ei myöskään ole tutustua FMOD-kirjastoon, jonka edellyttämä DLL-tiedosto ei ole hirveän suuri ja jonka mukana tulee valmis esimerkki Visual Basicille.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta