我在C Sharp创建了一架钢琴,目前我有键盘按键可以播放声音。例如,键A弹奏音符C.我遇到的问题是在那里,我想同时按下多个键并将声音输出。显然,我不想将所有的组合放在keyDown类中,因为我将不得不制作数千个if语句。有没有办法解决?KeyDown和KeyUp Multiple
4
A
回答
1
Windows只能处理一个消息队列,所以每次只有一个按键消息将以时间单位处理。你可以做的是在很短的时间间隔内获得所有关键事件(例如0.5秒),将所有按键保存在列表或队列中,然后按照键(使用线程)异步播放所有声音。我从来没有这样做过,但我认为应该起作用。希望可以帮助...
编辑
好吧,让我们看到: 第一列表,其中保存键
List<Key> _keys = new List<Key>();
然后启动一个定时器用于检查钥匙按时间间隔按下:
var t = new System.Timers.Timer(500); //you may try using an smaller value
t.Elapsed += t_Elapsed;
t.Start();
然后t_Elapsed
方法(请注意,如果你是在WPF的DispatcherTimer
应该使用,此计时器上System.Timers
)
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (_keys.Count > 0)
{
//Here get all keys and play the sound using threads
_keys.Clear();
}
}
然后是关键down方法:
void OnKeyDownMethod(object sender, KeyPressedEventArgs e) //not sure this is the name of the EventArgs class
{
_keys.Add(e.Key); //need to check
}
您可能试试这个,希望有所帮助。
1
相关问题
- 1. KeyDown和KeyUp事件
- 2. fireup与keyup和keydown
- 3. WPF的KeyDown和KeyUp事件
- 4. keyup keydown方法NSViewController
- 5. keyup keydown jquery处理
- 6. 可可全屏问题的keyDown和KeyUp
- 7. 为什么KeyUp和KeyDown事件变慢?
- 8. 如何为webdriver编写keyDown和keyUp?
- 9. jQuery - keydown/keypress/keyup ENTERKEY检测?
- 10. KEYDOWN按下左侧的KEYUP
- 11. 可可的keyUp/keyDown问题
- 12. iphone键盘keydown/keyup事件?
- 13. addEventListener和attachEvent如何工作? Keydown和Keyup不能正常工作
- 14. 如何计算keydown到keyup的时间
- 15. 的addEventListener KEYUP KEYDOWN与键码不工作
- 16. Jquery keyup或keydown事件不起作用
- 17. keyup/keydown vs输入事件 - angular 2
- 18. KeyUp/KeyDown只能捕获一次
- 19. NG-按键,NG-KEYUP,NG-KEYDOWN不点火
- 20. KeyDown KeySuppress是否取消KeyUp事件?
- 21. JavaScript的jQuery的KEYUP相当于()和的keydown()
- 22. 形式KEYUP和的KeyDown事件来改变变量
- 23. 为什么keydown和keyup事件中的keycode不同?
- 24. 如何在haskell中获得keydown和keyup事件?
- 25. 测量keydown和keyup事件之间的时间
- 26. 维护keyup和keydown上的Tab键顺序
- 27. CodeMirror和jQuery .keyup
- 28. .NET:TextBox的TextChanged事件并不总是触发,即使KeyUp和KeyDown正在触发
- 29. 无法在我的WP应用程序中执行KeyUp和KeyDown事件
- 30. Visual Studio中的KeyDown事件,KeyPress事件和KeyUp事件之间的区别
如果你能告诉我一个示例代码,我就会陷入这个部分。亲切的问候 – frz 2013-03-15 17:40:05
非常感谢很好的作品 – frz 2013-03-16 03:01:37