Сейчас я пытаюсь использовать SDL_Mixer для загрузки файла .wav для моей игры. Я создал отдельный заголовочный файл, куда поместил функции, связанные с загрузкой файлов, воспроизведением, освобождением после использования... а также загрузил в него звуковой файл.
audios.h:
Mix_Chunk* batSound = nullptr;
void init () {
initSDL ();
batSound = loadSound("bat.wav");
}
void play(Mix_Chunk* gChunk) {
if (gChunk != nullptr) {
Mix_PlayChannel( -1, gChunk, 0 );
}
}
main.cpp:
Audios audio;
audio.init();
for (Bats& bat : bats) {
bat.move(map);
graphic.renderBat(bat);
audio.play(audio.batSound);
}
и все работало нормально, просто не в том «дизайне», который мне нужен. Поэтому я переместил его в файл, в котором кодирую свою игру/логическое движение ("logics.h)" для более точного проектирования, но он больше не работает.
logics.h:
Bats () : dx (0), dy(0), timer(0) {}
Bats (SDL_Texture*_texture, int startX, int startY, int startDx, int startDy) {
init (_texture, batFrames, batClips);
rect.x = startX;
rect.y = startY;
rect.w = PLAYER_SIZE;
rect.h = PLAYER_SIZE;
dx = startDx;
dy = startDy;
timer = 1000;
}
void checkCollision (const vector &map) {
for (int i = rect.y/TILE_SIZE; i < (rect.y+rect.h)/TILE_SIZE; i++){
for (int j = rect.x/TILE_SIZE; j < (rect.x+rect.w)/TILE_SIZE; j++) {
if (map[j] == 'A' || map[j] == 'B' || map[j] == 'C' || map[j] == 'D' || map[j] == 'E' || map[j] == 'F' || map[j] == 'S') {
if (dx>0 && dy==0) {
dx *= -1;
audio.play(audio.batSound);
}
else if (dx0 && dx==0) {
dy *= -1;
audio.play(audio.batSound);
}
else if (dy
Подробнее здесь: https://stackoverflow.com/questions/784 ... header-fil
SDL_Mixer не воспроизводит звук после перемещения инициализации в отдельный заголовочный файл ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему pg.mixer.music.get_busy() возвращает False, если играет музыка [дубликат]
Anonymous » » в форуме Python - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-