Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515

    Animazione: play pause....

    ciao a tutti!!!!

    con questo cod:

    codice:
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.image.ImageObserver;
    
    import javax.swing.*;
    
    public class GifAnimata extends JFrame {
    
    	Image animation; 
    	Immagine currentAnimation = new Immagine();
    	JFrame frame = new JFrame("prova Animazione");
    	public GifAnimata() {	
    		prova();
    	}
    	public void prova()  {
    		ImageIcon ball_IMG_ICON = new ImageIcon("c://immagine.jpg");
    		animation = ball_IMG_ICON.getImage(); 
    													
    		prepareImage(animation, this);
    		currentAnimation.setX(10);
    		currentAnimation.setY(+100); 
    		new Timer(100, paintTimer).start();
    		
    		frame.setTitle("Gif Animata");
    		frame.setSize(1100, 720);   
    		frame.add(panel);
    		frame.setLocationRelativeTo( null );
    		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    		frame.setVisible( true );
    	}
    
    	JPanel panel = new JPanel() {
        public void paint(Graphics g) {
    		super.paint(g);
    		Graphics2D g2d = (Graphics2D) g;
    		g.setColor(Color.WHITE);
    		g.fillRect(0, 0, 1100, 720);
    		g2d.drawImage(animation, currentAnimation.getX(), currentAnimation.getY(), this); 								
    		Toolkit.getDefaultToolkit().sync(); 
    		g.dispose();
    
    	}
    	};
    	// in quale direzione inviare l'immagine
    	Action paintTimer = new AbstractAction() { 
    		public void actionPerformed(ActionEvent e) {			
    			//currentBall.setX(currentBall.getX() + 5);
    			currentAnimation.setY(currentAnimation.getY() - 1);
    			frame.repaint();
    		}
    	};
       
       public static void main(String[] args) {
    	   GifAnimata ga = new GifAnimata();
       }
    }
    class Immagine {
    	/*
    	 * Simple Object class to store the ball's co-ordinates.
    	 */
    	private int x;
    	private int y;
    
    	Immagine() {
    		;
    	} 
    
    	public int getX() { 
    		return x;
    	}
    
    	public void setX(int x2) {
    		x = x2;
    	}
    
    	public int getY() {
    		return y;
    	}
    
    	public void setY(int y2) {
    		y = y2;
    	}
    }
    faccio animare l'immagine dal basso verso l'alto....

    ora vorrei aggiungere 2 JButton con pause stoppa l'animazione con play riprende l'animazione...

    al pause ho scritto:

    new Timer(100, paintTimer).stop();

    ma non si ferma...

    HELP!!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Tieni il riferimento di uno stesso timer , esegui lo start e lo stop su di esso.
    Facendo
    codice:
    new Timer(100, paintTimer).start();
    crei e avvii un timer di cui poi però non ne mantieni il riferimento cioè dopo non puoi più interagire con esso.
    Tieni il riferimento al timer in una variabile visibile dai metodi che ne hanno bisogno e richiama gli opportuni metodi sempre su di esso.


  3. #3
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515
    grazie mille!!!

    infatti hai perfettamente ragione...sullo stesso timer dovevo lavorare...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.