vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Wavesound setzt nach einer Weile aus 
Autor: Erloeser
Datum: 30.12.07 13:32

Hallo,
ich hab mal wieder ein Problem und zwar habe in ein simples Arcade-Spiel programmiert welches selbstverständlich auch Soundeffekte in Form von .wav-Dateien benutzt.
Diese Spiele ich mir der API MCISendString bzw. "mciSendStringA" ab. Ich habe mich bewusst gegen die "sndPlaySoundA" API entschieden, da diese (meines wissens anch) nicht in der Lage ist mehrere Soundeffekte gleichzeitig abzuspielen.
Mit MCI setze ich einen Alias, damit ich eben mehrere Sounds gleichzeitig abspielen kann, was soweit auch gut klappt.

Jetzt zum Problem:
Wenn ich mein Spiel eien weile Spiele und viele Soundeffekte erzeugt werden, setzt irgendwann (nach ca 1800 Effekten) der Sound aus. Die Hintergrundmusik die ich als MP3 mit der gleichen API abspiele bleibt jedoch.

Der Code:

Die Funktion
Public Declare Function MCISendString Lib "winmm.dll" Alias "mciSendStringA" 
(ByVal lpszCommand As String, ByVal lpszReturnString As String, ByVal _
  cchReturnLength As Long, ByVal hwndCallback As Long) As Long
Public Declare Function GetShortPathName Lib "kernel32" Alias _
"GetShortPathNameA" 
(ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer _
As Long) As Long
 
Public Sub Sound(ByVal File As String, ByVal Alias As String)
    Dim Buffer As String
    Dim Result As Long
 
    If Sounds = True Then
        Buffer = Space$(255)
        If DebugMode = True Then
            File = "..\Sounds\" & File
        Else
            File = App.Path & "\Data\Sounds\" & File
        End If
 
        Result = GetShortPathName(File, Buffer, Len(Buffer))
 
        If Result <> 0 Then
            File = Left$(Buffer, InStr(Buffer, vbNullChar) - 1)
            If DebugMode = True Then
                If MCISendString("open " & File & " type WaveAudio alias " & _
                  Alias, 0, 0, 0) = 0 Then
                    MCISendString "play " & Alias & " from 0", 0, 0, 0
                End If
            Else
                If MCISendString("open " & File & " type WaveAudio alias " & _
                  Alias, 0, 0, 0) = 0 Then
                    MCISendString "play " & Alias & " from 0", 0, 0, 0
                End If
            End If
        End If
        SoundAliasID = SoundAliasID + 1
        frmMain.Caption = SoundAliasID
    End If
End Sub
Der Aufruf:
Call Sound("damage2.wav", "Damage2" & SoundAliasID)
Wenn ich das Spiel in der ENtwicklungsumgebung teste kann ich, nachdem der Sound ausgesetzt hat auch keine EXE mehr kompilieren. Es erscheint stattdessen folgende Meldung:
http://thief.ts-tk.de/_images/fehlermeldung.png

Wenn ich VB6 neu starte, geht jedoch alles wieder.

Weiß jemand worans liegt?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Wavesound setzt nach einer Weile aus1.861Erloeser30.12.07 13:32
Re: Wavesound setzt nach einer Weile aus995ModeratorMartoeng30.12.07 14:32
Re: Wavesound setzt nach einer Weile aus976Erloeser30.12.07 15:16
Re: Wavesound setzt nach einer Weile aus973ModeratorMartoeng31.12.07 11:51
Re: Wavesound setzt nach einer Weile aus991Erloeser31.12.07 13:43
Re: Wavesound setzt nach einer Weile aus974ModeratorMartoeng31.12.07 19:21

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel