Fade in und out von Bildern

Hallo,

ich programmiere ein kleines Spiel und möchte als Intro, so zu sagen, ein Bild einfaden und dann wieder ausfaden lassen. Nach langem Suchen im Internet frage ich hier mal nach, ob jemand mir helfen kann.

Ich würde gerne den Fade mit einer Fläche machen:

g.setColor(new Color(0, 0, 0, Var.alpha);
g.fillRect(0, 0, Var.screenwidth, Var.screenheight);

Auch nur ein Snippet: Sowas wie

Composite composite = AlphaComposite.getInstance(
    AlphaComposite.SRC_OVER, alpha);
g.setComposite(composite);

könnte da irgendwo vorkommen.

(Wenn du ein compilierbares Grundgerüst gepostet hättest, hätte ich das da gleich eingefügt. Nicht dass ich nicht ungefähr drölfzig solcher Snippets hier rumliegen hätte: Den Aufwand zu betreiben, um dann als mögliche Antwort zu bekommen: „Danke, aber bei mir ist dies-und-das ganz anders“ habe ich aufgegeben…)

Vielen Dank für die Antwort, habe es aber derweil if und try methoden hinbekommen.

Du solltest auf Marco13 hören, effiziente Transparenz bekommt man mit Composite-Typen hin. Man benötigt wohl außerdem noch einen Thread, der das nebenher zeichnet, sonst blockiert das Programm.
Was genau hast du gemacht?

Ich habs einfach billig mit ifs gemacht:

		if(Var.counter <= 1900) {
			g.drawImage(Var.background, 760, 340, 400, 400, null);
			
			g.setColor(new Color(255, 255, 255, 255));
			g.setFont(new Font("Arial", 0, 12));
			g.drawString("©ProjectHub-Games", 1760, 1020);
			g.setFont(new Font("Arial", Font.BOLD, 60));
			g.drawString("TestApp", 730, 150);
			
			if(Var.fadein == true) {
				if(Var.fadein1 > 0) {
					try {
						Var.fadein1 = Var.fadein1 - 1;
						g.setColor(new Color(0, 0, 0, Var.fadein1));
						g.fillRect(0, 0, Var.screenwidth, Var.screenheight);
						Thread.sleep(6);
					} catch(Exception e) { e.printStackTrace(); }
				}
			}
			
			if(Var.counter >= 1650 && Var.counter < 2000) {
				if(Var.fadeout == true) {
					if(Var.fadeout1 >= 0) {
						try {
							Var.fadeout1 = Var.fadeout1 + 1;
							g.setColor(new Color(0, 0, 0, Var.fadeout1));
							g.fillRect(0, 0, Var.screenwidth, Var.screenheight);
							Thread.sleep(6);
						} catch(Exception e) { e.printStackTrace(); }
					}
					if(Var.fadeout1 == 255) {
						Var.fadeout = false;
					}
				}
			}
			
		}

Einerseits kann es ja etwas positives sein, wenn bei einer Frage am Ende noch eine Lösung steht. Aber … das ist in so vieler Hinsicht und auf so vielen Ebenen schlecht und falsch, dass ich hoffe, dass niemand sich daran orientiert.