English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

我的VB遊戲作業
本身有加入背景音樂還有遊戲音效(都是WAV的檔)

Private Sub Form_Activate()

sndPlaySound App.Path & "\123.wav", SND_ASYNC

End Sub

雖然執行時可以播放
但是當我按下遊戲音效的時候
背景音樂就不見了
只剩下遊戲的音效

>>>>>遊戲音效就是
當我按下 音效物件按鈕 然後案 開始遊戲按鈕
玩遊戲時就會有音效(俄羅斯方塊從上向下掉的音效)

所以我原本在form設定的背景音樂本來是播放的狀態但是只要開始遊戲 我的方塊就會有往下掉的音樂 在這同時我的背景音樂就自動停止了 變成只剩下方塊往下掉的音效了

這樣就=我的音樂都發生衝突
不能邊聽音樂邊聽到遊戲的音效

所以我希望董VB音效的人交我
怎樣的程式碼可以讓我的音樂同時有聲音(背景音樂、遊戲音效)

希望會的人能幫幫我
我研究了好久
不管怎麼用都不能同時有背景音樂跟遊戲音效
希望會的能交交我吧

2007-03-04 11:50:16 · 2 個解答 · 發問者 ? 2 in 電腦與網際網路 程式設計

我的程式碼>>>語法貼到知識就會變成亂碼

所以我打成全型的

"\123.wav"

就是""會變成亂碼
Private Sub Form_Activate()

sndPlaySound App.Path & "\123.wav", SND_ASYNC

End Sub

2007-03-04 11:53:17 · update #1

怪怪的
重貼好了
每次貼
出現的亂碼都不同
Private Sub Form_Activate()

sndPlaySound App.Path & "\123.wav", SND_ASYNC

End Sub

2007-03-04 11:54:18 · update #2

是123.wav不是s.wav

2007-03-04 11:55:16 · update #3

2 個解答


'改用MCI來作吧,表單置1個Timer元件,還有把下面程式裡的\改成半型
Private Declare Sub GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long)
Private Declare Sub mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long)
Private Sub Command1_Click()
Dim S$
'音效檔(wav,mp3,mid...)
S = App.Path & "\456.wav"
PlayWav S, "MyWav"
End Sub
Private Sub Form_Load()
Dim S$
Show
'S=背景音樂檔(wav,mp3,mid...)
S = App.Path & "\123.wav"
PlayWav S, "BackWav"
Timer1.Interval = 500
Timer1 = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
'關掉所有的音樂
mciSendString "close BackWav", vbNullString, 0, 0
mciSendString "close MyWav", vbNullString, 0, 0
End Sub
'讓背景音樂一直重複播放
Private Sub Timer1_Timer()
Dim S$

S = String(256, Chr(0))
mciSendString "status BackWav mode", S, Len(S), 0
If Left(S, 7) = "stopped" Or Left(S, 2) = "停止" Then
  mciSendString "seek BackWav to start", vbNullString, 0, 0
  mciSendString "play BackWav", vbNullString, 0, 0
End If
End Sub
Sub PlayWav(ByVal nPath$, ByVal nName$)
Dim S$
'將長檔名改成短檔名
S = String(LenB(nPath), Chr(0))
GetShortPathName nPath, S, Len(S)
S = Left(S, InStr(S, Chr(0)) - 1)
'關掉之前播放的音樂
mciSendString "close " & nName, vbNullString, 0, 0
'打開音樂
mciSendString "open " & S & " alias " & nName, vbNullString, 0, 0
'開始播放
mciSendString "play " & nName, vbNullString, 0, 0
End Sub

2007-03-05 14:10:42 · answer #1 · answered by W.J.S. 7 · 0 0

我的方法是另開一個程式 讓它自動播放音效後自己關閉
再在你的主程式按下按鈕那邊
用Shell函數呼叫剛剛寫的音效程式...

2009-02-28 11:45:12 · answer #2 · answered by HIRO 4 · 0 0

fedest.com, questions and answers