kostenloser Webspace werbefrei: lima-city


Bild langsam einblenden.

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    lol4me

    lol4me hat kostenlosen Webspace.

    Edit: Was da auch immer los ist, ich habe dem tag/code">Code-Tag eingefügt!

    Ich habe einen Ladebildschirm, und will ihm langsam einblenden. Also so, dass der Monitor am Anfang schwarz ist, und immer heller wird. Dafür habe ich folgende 2 Methoden geschrieben:

    private void heller(BufferedImage bi, Frame f)
    {
    	for(int i = 0; i < 10; i++)
    	{
    		for(int j = 0; j < 599; j++)
    		{
    			for(int k = 0; k < 799; k++)
    			{
    				int p = bi.getRGB(k, j);
    				bi.setRGB(k, j, new Color(p).brighter().getRGB());
    				f.getCreateGameVariables().getLoading().setImage(bi);
    			}
    		}
    		f.repaint();
    		this.warte(20L);			
    	}
    }
    private void duenkler(BufferedImage bi, boolean repaint, Frame f)
    {
    	for(int i = 0; i < 10; i++)
    	{
    		for(int j = 0; j < 599; j++)
    		{
    			for(int k = 0; k < 799; k++)
    			{
    				int p = bi.getRGB(k, j);
    				bi.setRGB(k, j, new Color(p).darker().getRGB());
    				f.getCreateGameVariables().getLoading().setImage(bi);
    			}
    		}
    		if(repaint)
    		{
    			f.repaint();
    			this.warte(20l);
    		}
    	}
    }

    duenkler wird am Beginn mit false aufgerufen, um das Bild schwarz zu färben.
    Dann heller um es langsam einzublenden, dann sollen die Ladevorgänge folgen.
    Am Ende soll schließlich mit duenkler/true das Bild wieder ausgeblendet werden.
    Nur es klappt so nicht. Ich bekomme immer nur das Bild wenn es komplett hell ist zu sehen.

    (Zur Info: f ist das JFrame, getCreateGameVariables() enthält eine Instanz des Objectes Variable, welches die vars des aktuellen Pakages (hier "creategame" enthält), Loading ist die Instanz des Objectes, welches dem Ladebildschirm und die Koordinaten davon (0, 0) enthält und warte() ist eine Methode, die mit Thread.sleep() solange wartet wie man eben angibt, um das try/catch aus dem Hauptsource rauszuhalten.)

    Beitrag geändert: 26.12.2008 23:44:16 von lol4me
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo,

    damit das klappt, würde ich eine Klasse schreiben die von TimerTask erbt.

    import java.util.TimerTask;
    
    
    public class ShowTask extends TimerTask {
    
    	/*DeinKlassenname*/ parent = null;
    	int i = 0;
    	int anzDurchläufe = 50; //Hier muss stehen wieoft die methode heller aufgerufen wird
    	public ShowTask(/*DeinKlassenname*/ parent)
    	{
    		this.parent = parent;
    	}
    	@Override
    	public void run() {
    		parent.heller();
    		i++;
    		if(i == anzDurchläufe)
    			cancel();
    	}
    
    }

    Aus deinem Programm heraus startest du das nun folgendermaßen:
    java.util.Timer t = new Timer();
    t.schedule(new ShowTask(this), 0,200);
    //Timer wird gestartet. der zweite wert gibt an, wie viele millisekunden zwischen
    //jedem aufrufen der methode gewartet werden soll. So wird 5x pro sekunde die methode heller aufgerufen
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!