Я играю с некоторыми C#, и я кодировал приложение для фортепиано.Перемещение списка C#
Всякий раз, когда пользователь нажимает на пианино, я сохраняю местоположение звука (.wav) в списке ... следующий код - в методе button1_MouseDown.
if (e.Button == MouseButtons.Left)
{
SoundPlayer sp = new SoundPlayer();
string musName = Convert.ToString(mk.pitch);
string loc = @"D:\OneDrive\Year 2 Semester 1\OOP\Notes-Sound files\Notes-Sound files\mapped\" + musName + ".wav";
sp.SoundLocation = loc;
sp.Play();
music.Add(loc);
}
Теперь я хочу пройти цикл, чтобы играть все нажатые клавиши за один раз. Я делаю это следующим образом (когда пользователь нажимает на кнопку воспроизведения)
int k = 0;
for (k = 1; k < music.Count; k++)
{
SoundPlayer sp = new SoundPlayer();
sp.SoundLocation = music[k];
sp.Play();
}
Дело в том, что всякий раз, когда нажать кнопку воспроизведения только последняя нота нажата является played.However, когда я отладки, так или иначе, все ноты воспроизводятся. Есть идеи?
Привет, Я думаю, что вы должны ждать, что каждая нота играется перед игрой следующего –
Я также предполагаю, йо won't необходимости инициализировать новый игрок в каждой итерации, но вне цикла. – HimBromBeere