Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按键时播放一个或多个wav文件_C# - Fatal编程技术网

C# 按键时播放一个或多个wav文件

C# 按键时播放一个或多个wav文件,c#,C#,我需要在按键时播放一个或多个声音,当按键不再按下时,声音立即停止 我目前正在使用BASS.net声音库,声音的名称如下: public class Foo { public static int GetStream1(string path) { return Bass.BASS_StreamCreateFile(path, 0, 0, BASSFlag.BASS_SAMPLE_FLO

我需要在按键时播放一个或多个声音,当按键不再按下时,声音立即停止

我目前正在使用BASS.net声音库,声音的名称如下:

        public class Foo
        {
            public static int GetStream1(string path)
            {
                return Bass.BASS_StreamCreateFile(path, 0, 0, BASSFlag.BASS_SAMPLE_FLOAT | BASSFlag.BASS_STREAM_PRESCAN);
            }
            public static int GetStream2(string path)
            {
                return Bass.BASS_StreamCreateFile(path, 0, 0, BASSFlag.BASS_SAMPLE_FLOAT | BASSFlag.BASS_STREAM_PRESCAN);
            }
        }

        private void setupPlayer()
        {
            stream1 = Foo.GetStream1(path1.Text);
            stream2 = Foo.GetStream2(path2.Text);
        }

//when the key1 is down/something to handle when the key is down
                Bass.BASS_Init(1, 44100, BASSInit.BASS_DEVICE_DEFAULT, this.Handle);
                Bass.BASS_SetDevice(1);
                Bass.BASS_ChannelPlay(Foo.GetStream1(path1.Text), false);

//when the key1 is up/something to handle when the key is up
                Bass.BASS_StreamFree(Foo.GetStream1(path1.Text));
                Bass.BASS_SetDevice(1);
                Bass.BASS_Free();

//when the key2 is down/something to handle when the key is down
                Bass.BASS_Init(2, 44100, BASSInit.BASS_DEVICE_DEFAULT, this.Handle);
                Bass.BASS_SetDevice(2);
                Bass.BASS_ChannelPlay(Foo.GetStream1(path2.Text), false);

//when the key2 is up/something to handle when the key is up
                Bass.BASS_StreamFree(Foo.GetStream2(path2.Text));
                Bass.BASS_SetDevice(2);
                Bass.BASS_Free();

正如我所说的,当按键向下时,播放声音,当按键向上时,声音停止。另外,您可以按1个以上的键,文件将独立于按下或释放的其他键播放。换句话说,按下和释放一个键不应影响同时按下或释放的其他键。

不确定这是否是您的目标,但.NET framework允许控制(窗口组件)事件。其中一个事件是。在该方法中,您可以看到KeyEventArgs e参数的视图。该参数可以通过
e.KeyCode
告诉您正在按哪个键,然后您可以将该键与预设键进行比较,以确定要播放的音乐。话虽如此,在不同的时间按住多个键将触发此事件的另一个实例,从而解决您的第二个请求

祝你好运,玩得开心