SFML и C++ Уроки \ Разработка игр › Форумы › SFML Audio › Робота со звуками и музыкой.
В этой теме 2 ответа, 3 участника, последнее обновление newUser11 8 года/лет, 10 мес. назад.
-
АвторСообщения
-
Привет тут такая проблемка у меня.
Подключаю библиотеку сфмлевскую с аудио.C++1#include <SFML/Audio.hpp>потом в инт мэйне создаю объект музыки,объект саунд буфера и объект саунда.заливаю туда музыку и звук.
C++12345678Music music;SoundBuffer buffer;if (!buffer.loadFromFile("C:/Users/Vlad/Documents/Visual Studio 2010/Projects/testsfml/audio/fail.wav"))return -1;Sound sound;sound.setBuffer(buffer);if (!music.openFromFile("C:/Users/Vlad/Documents/Visual Studio 2010/Projects/testsfml/audio/audio1.ogg"))return -1; // errorпотом в цикле “пока окно отрыто” я добавил такие строки :
C++12if (event.type == Event::KeyPressed)//событие нажатия клавишиif ((event.key.code == Keyboard::M)) music.play();и теперь по нажатии клавиши М музыка включается .все хорошо.но как сделать так что бы она повторялась ? а то когда композиция заканчивается она не начинает играть сначала а просто тихо.ну это еще такое .можно еще раз нажать клавиш М и она начнет играть заново.
а вот второй вопрос.
там же в цикле “пока окно открыто ”
у нас есть вот тот большой “if” пока игрок жив.
и там мы можем двигать игроком. и все такое .
в else я добавил строки …вот код:C++1234567if (p.life==true){............}else {music.stop();sound.play();}и вот в чем прикол .музыка останавливается .а звук играть не хочет.много чего перепробовал не помогает.
может вы в чем то подскажите .заранее спасибо.привет. посмотри методы music. может там есть что-то вроде isPlayed , getStatus и тд.. и ты сможешь проверять – если музыка не играет, то включить её. там у music был еще по моему метод setLoop – дословно задать цикл, может это оно. не помню, сейчас звук у себя не могу тестить.
второй вопрос – скорее всего происходит зацикливание звука. он бесконечно пытается сыграть, а ты слышишь тишину. может стоит сделать какой то триггер.
вобще посмотри вот тут “общие ошибки” по второму вопросу
Метод, который включает музыку сначала, если она закончилась крч:)
C++1music.setLoop(true); -
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.