Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: Audio file won't play.  (Read 98 times)

0 Members and 1 Guest are viewing this topic.

MC1

  • Newbie
  • *
  • Posts: 4
    • View Profile
    • Email
Audio file won't play.
« on: February 19, 2026, 01:11:13 am »
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <iostream>

int main()
{
  sf::RenderWindow window(sf::VideoMode({800,600}), "fuckerrr", sf::Style::Close | sf::Style::Resize, sf::State::Windowed);
  window.setVerticalSyncEnabled(true);

  bool FS = false;
  bool color = false;

  while (window.isOpen())
  {
    sf::Music music("siege - conform.mp3");

    window.clear(sf::Color::White);
    sf::Texture texture("snapshot.jpg");
    sf::Sprite sprite(texture);
    sprite.setPosition({250, 120});
    if (color)
      sprite.setColor(sf::Color(0, 255, 0));
    else
      sprite.setColor(sf::Color::White);
    window.draw(sprite);
    window.display();

    while (const std::optional event = window.pollEvent())
    {
      if (event->is<sf::Event::Closed>())
        window.close();

      if (const auto* key = event->getIf<sf::Event::KeyPressed>())
      {
        if (key->scancode == sf::Keyboard::Scan::Escape)
          window.close();
        else if (key->scancode == sf::Keyboard::Scan::F)
        {
          if (FS == false)
          {
            FS = true;
            window.create(sf::VideoMode({800,600}), "fuckerrr", sf::Style::Close | sf::Style::Resize, sf::State::Fullscreen);
            window.setVerticalSyncEnabled(true);
          }
          else
          {
            FS = false;
            window.create(sf::VideoMode({800,600}), "fuckerrr", sf::Style::Close | sf::Style::Resize, sf::State::Windowed);
            window.setVerticalSyncEnabled(true);
          }
        }
      }

      if (const auto* mouseCurser = event->getIf<sf::Event::MouseMoved>())
      {
        if (mouseCurser->position.x >= 250 && mouseCurser->position.x <= 570 && mouseCurser->position.y >= 120 && mouseCurser->position.y <= 360)
          color = true;
        else
          color = false;
      }
      if (const auto* mouseButtonClicked = event->getIf<sf::Event::MouseButtonPressed>())
      {
        if (mouseButtonClicked->button == sf::Mouse::Button::Left)
        {
          if (mouseButtonClicked->position.x >= 250 && mouseButtonClicked->position.x <= 570 && mouseButtonClicked->position.y >= 120 && mouseButtonClicked->position.y <= 360)
          {
            std::cout << "You&#39;ve clicked the Siege.\n";
            music.play();
          }
        }
      }
    }
  }
}

eXpl0it3r

  • SFML Team
  • Hero Member
  • *****
  • Posts: 11296
    • View Profile
    • development blog
    • Email
Re: Audio file won't play.
« Reply #1 on: February 19, 2026, 06:54:57 am »
Every frame the sf::Music object is destroyed and recreated. The destruction stops the playback.

Create the music object outside the main loop.
« Last Edit: February 19, 2026, 11:23:45 am by eXpl0it3r »
Official FAQ: https://www.sfml-dev.org/faq/
Official Discord Server: https://discord.gg/nr4X7Fh
——————————————————————
Dev Blog: https://duerrenberger.dev/blog/

MC1

  • Newbie
  • *
  • Posts: 4
    • View Profile
    • Email
Re: Audio file won't play.
« Reply #2 on: February 19, 2026, 12:10:02 pm »
Okay, thanks for your help.