Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    51

    Eseguire file.wav con javax.sound.sampled

    Salve,
    ho provato ad eseguire questo codice, ma mi da errore nel metodo creaWav in corrispondenza di return(clip): "variabile clip potrebbe non essere inizializzata". Allora ho provato ad inizializzarla così: Clip clip=new Clip(); e mi da errore: "la classe Clip è una classe astratta e non può essere inizializzata".
    Per far funzionare il tutto ho dovuto usare un oggetto Clip dichiarato come campo d'istanza allora funziona con il metodo creaWav che ritorna void ed usa il campo clip dichiarato al di fuori.
    Se uno deve far suonare il wav pigiando più bottoni più volte sarebbe stato utile avere un metodo da richiamare una sola volta ed usare più volte il clip di ritorno.
    Dove è l'intoppo?
    Grazie

    codice:
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.Clip;
    import java.net.*;
    import java.awt.Color;
    import javax.swing.*;
    
    
    public class NewClass extends JFrame {
        AudioInputStream audioIn;
        Clip clip,clip1,clip2;
        JButton jb1,jb2;
        
        public NewClass() {        
            setTitle("NewClass");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
            getContentPane().setBackground(Color.white);        
            setLayout(null);
            setSize(285, 100);
            setLocationRelativeTo(null);        
            setVisible(true);
           
            jb1 = new JButton();
            jb1.setText("On");
            jb1.setBounds(10,10, 100, 40);
            jb1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                   clip1=creaWav("/sound/Click On.wav");
                   clip1.start();
                }
            });
            add(jb1);
            jb2 = new JButton();
            jb2.setText("Off");
            jb2.setBounds(112,10, 100, 40);
            jb2.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                   clip2=creaWav("/sound/Button Click Off.wav");
                   clip2.start();
                }
            });
            add(jb2);         
        }
        private Clip creaWav(String pat){
            Clip clip;
            try{
                URL souURL = getClass().getResource(pat);
                AudioInputStream  audioIn = AudioSystem.getAudioInputStream(souURL);
                clip = AudioSystem.getClip();
                clip.open(audioIn);
            } catch(Exception ex) {
                System.err.println(ex.getMessage());
            }
            return(clip);            
        }
    
    
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new NewClass();
                }
            });
        }    
    }

  2. #2
    Semplicemente
    codice:
     private Clip creaWav(String pat){
            Clip clip=null;
            ...
    Ciao
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.