И словил вот такую ошибочку: Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток. Немного погуглив, я понял, что метод, в котором происходит добавления шара, вызывается в не в том потоке, в котором создался m_soundPlayer. В моей игре есть как минимум два потока: основной и обработчик событий. Объект класса GameViewT создаётся в основном (в том числе его содержимое). А вот метод в котором добавляется шар на поле уже вызывается в потоке обработчика событий (при нажатии мышкой на поле). Так что тут и происходит "конфликт интересов". Что же делать? Не хочу я создавать объект там же, где он вызывается, потому что тогда аудиофайл будет каждый раз заново подгружаться с жёсткого диска (хотя у меня ssd, всё равно, это лишняя трата времени и ресурсов, я так не хочу). Поискал в интернете примеры решения данной проблемы. Одно из решений, вынести в глобальную переменную и отовсюду ей пользоваться. "Глобальные переменные - зло" - кричит какой-то голос, но уже не так громко, как раньше, когда я только-только выпустился с универа. Поработав в разных местах, я заметил что другие уважающие себя разработчики не пренебрегают пользоваться ими, хоть и в изменённом виде: в виде синглтонов. Для меня по факту это всё та же глобальная переменная, просто в обёрточке. Так что я тоже, не брезгуя, создаю хэндлер-синглтон: