さて、mciSendStringを使用してSOUNDクラスを作成しました。私はそれを使って、私が作っているRPGスタイルのゲームのための音楽やその他のサウンドファイルを再生しています。それは動作し、それはうまく動作します...しかし、。私の問題は、それが動作するためには、サウンドファイルの完全なパスが必要だということです(これが本当であるかどうかは分かりません)。 - 引用符をADDパスに .net mcisendstring - フルパスの代わりにリソースを使用する
- mcisendstringにスペース、スペースがクラッシュ(ファイルの読み込みに失敗)が発生します嫌い:ここ
はmcisendstringのquerksの一部です
- 非常に長いパスは読み込みに失敗します(許容最大文字数は255)
- 相対パスは読み込みに失敗します...(chicken.mp3のようなものは使用できません...使用する必要がありますC:\ chicken.mp3) 繰り返し= trueの
は私のリソースにファイルを追加しようとしたリソースへのパスを設定しようとした場合個の
Value of type '1-dimensional array of Byte' cannot be converted to 'String'
。 すべてのヘルプは大歓迎です:)
をここに私のコードです:
Public Class SOUND
Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
'Command String VERY IMPORTANT
Private oName As String = Nothing
Public Property Name As String
Set(value As String)
oName = value
End Set
Get
Return oName
End Get
End Property
Public Sub Play(ByVal id As Integer, ByVal repeat As Boolean, Optional volume As Integer = 1000)
If repeat = True Then
mciSendString("Open " & GetFile(id) & " alias " & oName, CStr(0), 0, 0) 'Open the file
mciSendString("play " & oName & " repeat ", CStr(0), 0, 0) 'then play with repeating value
Else
mciSendString("Open " & GetFile(id) & " alias " & oName, CStr(0), 0, 0)
mciSendString("play " & oName, CStr(0), 0, 0)
End If
'Optionally Set Volume
mciSendString("setaudio " & oName & " volume to " & volume, CStr(0), 0, 0)
End Sub
Public Sub Kill(ByVal song As String)
mciSendString("close " & song, CStr(0), 0, 0)
oName = Nothing
End Sub
' Media Library
Private Function GetFile(ByVal id As Integer) As String
Dim path As String = ""
'mcisendstring Hates spaces, spaces will cause crash (failure to load file) - ADD QUOTES
'Dots in path can cause failure to load (only dot should be for the extention)
'Very Long Paths will cause failure to load (Max Characters allowed is 255)
'Relative paths will cause failure to load...(cannot use something like chicken.mp3 ... must use ex:[C:\chicken.mp3])
'.wav files will fail to load if repeat = true
Select Case id
Case 0 'Game Over
path = "C:\FinalFantasy7-SendaDreamIntoTheUniverse.mp3"
Case 1 'Battle Sequence
path = "C:\FinalFantasyTactics-Garland_Magic.mp3"
Case 2 'Battle Victory
path = "C:\FinalFantasyLegend2-Victory.mp3"
Case 3 'Mission Time
path = "C:\FinalFantasyAdventure-Mission.mp3"
End Select
path = Chr(34) & path & Chr(34)
'Chr(34) is quotes...cannot just use "" because it will think that it is part of the string/path itself.
Return path
End Function
エンドクラス
私は必要なもの:
- 私は何とか取得する必要があります。 mp3ファイルをパスとして使用できるリソースとして使用するか、これらのファイルをルートドライブに入れるか、いくつかの手段が必要です他の完全なコンピュータパス。私は
変更
Select Case id Case 0 'Game Over path = "C:\FinalFantasy7-SendaDreamIntoTheUniverse.mp3" End Select
を必要があるものの
例
Select Case id
Case 0 'Game Over
path = My.Resources.FinalFantasyAdventure_Mission
End Select
私は音遊ぶ方法へ:
(別のテストフォーム上の)
Dim intSound As Integer = 0
Dim snd As New SOUND 'SOUND is the sound class with mcisendstring
Private Sub PlaySoundBtn_Click(sender As System.Object, e As System.EventArgs) Handles PlaySoundBtn.Click
intSound += 1
With snd
.Name = "SOUND" & intSound 'SOUND is the alias along with the number (this one is SOUND1)
.Play(3, True, 500)
'3 is the song ID, True is for the repeat, 500 is for the optional volume (Max = 1000)
End With
End Sub
P.S.私は自分のプロジェクトでXNA Graphicsを使用しており、NuGetのBizArk Coreも持っています。だから私がこれらのどちらかを使うことができるなら、どうすれば私がやるべきことをするためにこれらのどちらを使うことができるか教えてください。助けを前にありがとう。
これはmciSendStringでは不可能です。しかし確かにXNAで可能です:http://msdn.microsoft.com/en-us/library/bb195053.aspx –
さて、私はページを見ましたが、それは私を助けるものではありません。どのように私はこれを行うに行くだろう。ネット(C#またはC + +ではない) –