Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    problema di loop di array

    ciao a tutti, devo fare un programmino in cui c'è un loop di 5 immagini raffiguranti le varie fasi di corsa di un maratoneta che deve andare da sinistra a destra dell'applet. Una volta arrivato alla fine, deve girarsi e correre da destra a sinistra dell'applet (quindi altre 5 immagini raffiguranti il corridore di prima, specchiato).
    Nel codice che ho fatto, il corridore va avanti e indietro, però le immagini sono sempre le prime 5.

    codice:
    import java.applet.Applet;
    import java.awt.image.*;
    import java.awt.*;
    import java.awt.Graphics.*; 
       
        public class Anim2Applet extends Applet {
            Image[] images = new Image[12];
            int frame=0, x,i;
            
            public void init() {
                x=1;
                i=1;
                
                if (i<=1){
                images[0] = getImage(getDocumentBase(), "Corridore0.jpg");
                images[1] = getImage(getDocumentBase(), "Corridore1.jpg"); 
                images[2] = getImage(getDocumentBase(), "Corridore2.jpg");
                images[3] = getImage(getDocumentBase(), "Corridore3.jpg");
                images[4] = getImage(getDocumentBase(), "Corridore4.jpg");
                images[5] = getImage(getDocumentBase(), "Corridore5.jpg");
            }
                else {
                images[0] = getImage(getDocumentBase(), "Corridore6.jpg");
                images[1] = getImage(getDocumentBase(), "Corridore7.jpg"); 
                images[2] = getImage(getDocumentBase(), "Corridore8.jpg");
                images[3] = getImage(getDocumentBase(), "Corridore9.jpg");
                images[4] = getImage(getDocumentBase(), "Corridore10.jpg");
                images[5] = getImage(getDocumentBase(), "Corridore11.jpg");
            }
                setBackground(Color.white);
                
            }    
          
            public void paint(Graphics g) {
                
                if (x>=getSize().width-107) ++i; 
                if (x<=0) --i;
                if (i<=1) x=x+15;
                else x=x-15;
               
                Graphics2D g2 = (Graphics2D)g;
                g2.drawImage(images[frame], x, 100, this);       
                try { Thread.sleep(300);
                }
                catch (InterruptedException e) {}
                frame = (frame+1)%images.length; 
                repaint();
            
            }
        }
    Aiutatemi perchè non so proprio come fare
    visita <a href="http://www.darvadea.net">il sito del mio gruppo</a>

  2. #2
    nella definizione dell'array ho sbagliato a mettere il valore 12, ma anche con 6 è uguale.
    visita <a href="http://www.darvadea.net">il sito del mio gruppo</a>

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    caricale tutte e subito, magari usa un MediaTracker. iltuo problema lì è che una volta chiamato init() non lo chiami più, per cui, init viene chiamato al momento della creazione dell'applet, i vale 1 e carica solo le prime 6 immagini.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Grazie mille, mi hai fatto venire in mente che potevo caricare 2 array dicersi all'avvio e alternare il loro loop all'occorrenza. A MANETTAAAA!!!
    codice:
    import java.applet.Applet;
    import java.awt.image.*;
    import java.awt.*;
    import java.awt.Graphics.*; 
      
        public class Anim2Applet extends Applet {
            Image[] images = new Image[6];
            Image[] images2 = new Image[6];
            int frame=0, x,i;
            
            public void init() {
                x=1;
                i=1;
                
                images[0] = getImage(getDocumentBase(), "Corridore0.jpg");
                images[1] = getImage(getDocumentBase(), "Corridore1.jpg"); 
                images[2] = getImage(getDocumentBase(), "Corridore2.jpg");
                images[3] = getImage(getDocumentBase(), "Corridore3.jpg");
                images[4] = getImage(getDocumentBase(), "Corridore4.jpg");
                images[5] = getImage(getDocumentBase(), "Corridore5.jpg");
                images2[0] = getImage(getDocumentBase(), "Corridore6.jpg");
                images2[1] = getImage(getDocumentBase(), "Corridore7.jpg"); 
                images2[2] = getImage(getDocumentBase(), "Corridore8.jpg");
                images2[3] = getImage(getDocumentBase(), "Corridore9.jpg");
                images2[4] = getImage(getDocumentBase(), "Corridore10.jpg");
                images2[5] = getImage(getDocumentBase(), "Corridore11.jpg");
    
                setBackground(Color.white);
                
            }    
          
            public void paint(Graphics g) {
                Graphics2D g2 = (Graphics2D)g;
                if (x>=getSize().width-107) ++i; 
                if (x<=0) --i;
                if (i<=1) x=x+15;
                else x=x-15;
                if(i<=1) g2.drawImage(images[frame], x, 100, this);
                else g2.drawImage(images2[frame], x, 100, this);
                try { Thread.sleep(300);
                }
                catch (InterruptedException e) {}
                frame = (frame+1)%images.length; 
                repaint();
                
            }
        }
    visita <a href="http://www.darvadea.net">il sito del mio gruppo</a>

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.