În acest articol vom vorbi despre cum putem pune o melodie de fundal într-un program făcut în Java (sau chiar într-un joc).
ATENȚIE!
Din anumite motive, fișierul trebuie să fie .wav și nu .mp3 . În cazul în care fișierul vostru este .mp3 vă recomand să îl convertiți la .wav (sincer chiar nu știu de ce nu merg și mp3-urile).
Pentru început vom crea un nou proiect și o clasă cu ce nume doriți (eu o să ii zic Sound). În metoda main o să creăm o fereastră care va avea un buton. La apăsarea butonului melodia va începe. Am ales să fac asta în felul următor:
public static void main(String[] args) { JFrame frame=new JFrame(); frame.setSize(200,200); //comenzile de baza pentru crearea ferestrei JButton button=new JButton("Apasa-ma"); //cream butonul frame.add(button); //il adaugam in fereastra button.addActionListener(new AL()); frame.setVisible(true); //facem fereastra sa apara frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //facem fereastra sa se inchida cand apasam X } public static class AL implements ActionListener { public final void actionPerformed(ActionEvent e) { music(); } }
Prin intermediul metodei ″music″ vom face melodia să răsune în urechile voastre. Dar înainte, asigurați-vă că aveți aceste import-uri în clasa voastră pentru ca totul să funcționeze cum trebuie:
import java.awt.event.*; import java.io.*; import javax.swing.*; import sun.audio.*;
Tipurile de dată
Ne vom folosi de 3 tipuri de dată:
- AudioStream (o să îi zicem BGM de la BackgroundMusic)
- AudioPlayer (o să îi zicem MP de la MusicPlayer)
- ContinuousAudioDataStream (o să îi zicem loop)
AudioPlayer este player-ul care va porni melodia atunci când butonul va fi apăsat. AudioStream este de fapt melodia propriu zisă. ContinuousAudioDataStream este de fapt loop-ul (sau bucla pe românește) care va face ca melodia să ruleze până la sfârșit. După ce vom declara aceste variabile, vom folosi un try catch statement (pentru cei ce nu știu, este ca un if else statement doar că atunci când ceva este în neregulă, vă va afișa o eroare în consolă cu ce este mai exact în neregulă). Pe ramura try vom scrie doar două comenzi și anume:
BGM = new AudioStream(new FileInputStream(“numele fișierului”));
MGP.start(BGM);
Va trebui să dați drag and drop în proiectul vostru la fișierul vostru. După ce ați făcut asta proiectul ar trebui să arate cam așa:
Pe ramura catch vom scrie doar comanda foarte des întâlnită în programele Java:
error.printStackTrace();
Și nu în ultimul rând, vom da drumul la player folosind o ultimă comandă:
MP.start(loop);
Acestea fiind spuse, metoda ar trebui să arate așa:
public static void music() { AudioPlayer MP = AudioPlayer.player; AudioStream BGM; ContinuousAudioDataStream loop = null; try { BGM = new AudioStream(new FileInputStream("C:\\Users\\MikeStrike\\Desktop\\sound.wav")); MP.start(BGM); } catch(IOException error) { error.printStackTrace(); } MP.start(loop); }
Programul final:
package com.tutorial; import java.awt.event.*; import java.io.*; import javax.swing.*; import sun.audio.*; public class Sound { public static void main(String[] args) { JFrame frame=new JFrame(); frame.setSize(200,200); JButton button=new JButton("Apasa-ma"); frame.add(button); button.addActionListener(new AL()); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static class AL implements ActionListener { public final void actionPerformed(ActionEvent e) { music(); } } public static void music() { AudioPlayer MP = AudioPlayer.player; AudioStream BGM; ContinuousAudioDataStream loop = null; try { BGM = new AudioStream(new FileInputStream("C:\\Users\\MikeStrike\\Desktop\\sound.wav")); MP.start(BGM); } catch(IOException error) { error.printStackTrace(); } MP.start(loop); } }
Sper că v-a fost de folos acest tutorial. Am încercat să îl fac cât mai simplu și fără să mă abat de la subiect foarte mult. După ce veți porni programul veți vedea un buton, pe care dacă îl apăsați va porni muzica de fundal. În afară de butonul astă, ați putea apăsa și butonul de like de la videoclipul acestui tutorial care va apărea în curând: