Каков наилучший способ воспроизводить один и тот же звук много раз одновременно в WPF? - PullRequest
0 голосов
/ 27 апреля 2020

Моя задача - озвучить автоматику c оружия. Проблема в том, что звуки огня намного длиннее, чем расстояние между выстрелами, поэтому я должен проигрывать их одновременно. Я придумал этот код ниже, но первые кадры глючат и загружают звук, так как новый каждый раз не выглядит отличным решением (я очистил все не звуковые относительные логи c):

Пожалуйста, сбросьте мне подсказка на лучший подход.

Спасибо

public class MachineGun
    {
        private readonly Uri soundLocation
        private readonly int firePeriod;
        private int ticksFromLastFire;

        public MachineGun()
        {
            var appDirectory = Path.GetDirectoryName(Application.ExecutablePath);
            soundLocation = new Uri("file:///" + appDirectory + @"/Assets\Sounds\GunSounds\fire_MachineGun.wav");
            firePeriod = 3;
            ticksFromLastFire = 0;
        }

        public override void Fire()
        {
            if (ticksFromLastFire < firePeriod) return;
            ticksFromLastFire = 0;

            var sound = new MediaPlayer();
            sound.Open(soundLocation));
            sound.Play();
        }

        public override void IncrementTick() => ticksFromLastFire++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...