Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    2

    [JAVA] camvbiare movimento scala e colore! come fare??

    Ciao a tutti!
    Dunque, io devo creare un'applet in bluej, e dovrei far muovere una pallina di 50 px di diametro da sinistra a destra e contrario in uno spazio di 250x50px, e mentre lo fa dovrebbe rimpicciolirsi ed ingrandirsi, e contemporaneamente cambiare colore, da giallo a rosso.
    per ora sono riuscito a fare (un pò a calcoli, un pò a caso) una cosa del genere, dove una pallina che parte da destra si muove fino ad arrivare al lato sinistro, e passando dal colore nero al bianco.

    codice:
    import java.awt.*;
    import javax.swing.*; 
    import java.awt.event.*;
    import java.awt.geom.*; 
    import javax.swing.border.*;
    import MGui.*;
    
    public class Pallina extends MApplet {
        int i=0, n, k=0, g;// Dichiarazione Variabili i=0 e n e k
        Ellipse2D.Double e = new Ellipse2D.Double (200, 0, 50, 50);//Crea Nuovo Ellisse
        
        public void setup(){
         
        
        public void mpaint ( Graphics2D g2 ){
            GraphSet.antialiasingOn(g2);
            
            
            //Trasf Colore
            n = (int)Math.floor(255*(+i/200.0));
            GraphSet.setColor(g2,n, n, n);  // imposta nuovo colore
         
            
            //Movimento
            
            AffineTransform nuovaTrasf2 = AffineTransform.getTranslateInstance (-i++,0);
            g2.transform(nuovaTrasf2);
            i = (i+10);
            
            
                    
            
            
            g2.fill(e);    
            pause(100);
            mrepaint();
    
                }
        
     }
    Ora, si fa un pò schifo, la pallina si ferma finita la corsa, ed è sempre della stessa dimensione.
    ho cercato di inserire comandi come getAffineTransform.getScaleInstance ma a quanto pare rimpicciolendosi l'oggetto scombina il movimento e mi va fuori dallo schermo.
    ora sono veramente ad un punto morto.

    qualcuno ha la minima idea di come potrei procedere??
    vi premetto che esco da un corso di tre mesi di "informatica per il disegmo industriale", dove java è stato trattato veramente moooolto blandamente, e a differenza di tutti i compagni, non ho un'amico o parente programmatore!!!

    vi prego aiutatemi!!! grazie in anticipo!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Quando posti del codice, usa gli appositi tag CODE per mantenere formattazione e indentazione, come spiegato nel punto 6 del Regolamento interno.


    Li ho aggiunti io.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] camvbiare movimento scala e colore! come fare??

    Originariamente inviato da JaWab
    codice:
    import MGui.*;
    
    public class Pallina extends MApplet {
        
        public void mpaint ( Graphics2D g2 ){
    E che roba sarebbero questi MGui, MApplet, mpaint()???
    Ma usare una "normale" applet come fanno (quasi) tutti i programmatori di 'sto mondo .... no??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    2

    Re: Re: [JAVA] camvbiare movimento scala e colore! come fare??

    Originariamente inviato da andbin
    E che roba sarebbero questi MGui, MApplet, mpaint()???
    Ma usare una "normale" applet come fanno (quasi) tutti i programmatori di 'sto mondo .... no??
    sono librerie che ci ha passato il professore, e, come ho già specificato, NON sono proprio un programmatore ^^
    detto questo... qualche consiglio?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: [JAVA] camvbiare movimento scala e colore! come fare??

    Originariamente inviato da JaWab
    qualche consiglio?
    Detto a grandi linee e in generale, l'approccio dovrebbe essere il seguente:

    a) Devi creare e tenere dello "stato" che rappresenta la entità che devi disegnare. Questo lo hai ... è l'oggetto Ellipse2D.Double che descrive la pallina.

    b) Devi fare il movimento della pallina in modo "temporizzato". Questo comporta il fatto che devi fare certe operazioni solo ogni tot di tempo. Le soluzioni generalmente sono 2: o usi un thread separato oppure usi un "timer". L'uso del thread complica un po' le cose e se oltretutto non hai dimestichezza con i thread è meglio tralasciare questa soluzione. Ti conviene quindi usare un timer e sto parlando della classe javax.swing.Timer. L'uso è davvero semplice. Devi crearlo passando il tempo di delay e un ActionListener che devi implementare tu. Devi ovviamente farlo partire con start().
    Ogni volta che il timer lancia l'evento, viene invocato il actionPerformed() del tuo listener.

    c) Il tuo mpaint() dovrebbe occuparsi solo del disegno della pallina .... non deve occuparsi del movimento!!! Il movimento lo devi gestire a seguito dell'evento del timer prima indicato. Ovvero nel contesto di quel actionPerformed() devi "muovere" la pallina modificando lo stato del Ellipse2D.Double e poi prima di terminare la gestione dell'evento, richiedere il "repaint" della applet.

    Lo ripeto per essere più chiaro: dentro mpaint() non dovresti fare alcuna gestione del movimento, non devi fare operazioni di "pause", "repaint" o altro che non sia il disegno della pallina.

    Ovviamente non so cosa c'è dietro tutte le classi in quel package speciale MGui, quindi non so esattamente cosa fanno. Ma lo posso supporre ... e immagino che il criterio di painting sia lo stesso che usa Swing ... quindi l'approccio giusto è quello che ho detto sopra.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.