【发布时间】:2021-09-27 21:31:37
【问题描述】:
我正在尝试创建一个飞扬的小鸟克隆,但我有点卡在游戏效果上。 我正在使用 SoundPlayer 类加载一个 .wav 文件并在用户按下某个键以使鸟飞得更高时播放它。
但我的问题是当用户不断按下键或再次快速按下相同的键时。
每次重放声音时都会中断声音(如果尚未完成)。
我该如何解决这个问题?有没有办法在重新播放之前检查声音是否已经结束?
或者也许使用 SoundPlayer 类不适合用于此目的?
首先加载.wav文件:
System.Media.SoundPlayer flyUp = new System.Media.SoundPlayer(@"flyUp.wav");
然后在 KeyDown 事件中,播放它:
private void frmMain_KeyDown(object sender, KeyEventArgs e)
{
switch (gameState)
{
case GameState.game:
if (e.KeyCode == Keys.Space)
{
flyUp.Play();
iGravity = -3;
}
if (e.KeyCode == Keys.Escape)
{
this.Close();
}
break;
case GameState.gameover:
if (e.KeyCode == Keys.Enter)
{
gameState = GameState.reload;
}
if (e.KeyCode == Keys.Escape)
{
this.Close();
}
break;
case GameState.reload:
Reload();
break;
}
}
【问题讨论】: