Canvas aktualisierung mit repaint

Status
Nicht offen für weitere Antworten.

Turmfalke

Mitglied
Hallo miteinander,

ich wollt mich mal an Snake probieren und stoße auf folgendes Problem:
Ich habe eine Klasse die von Canvas erbt und beim initialisieren des Applets richtig zeichnet (Spielfeld ohne schlange).
Wenn ich jetzt aber die repaint() methode außerhalb der paint() mehtode aufrufe, dann passiert nix! Die grüne schlange erscheint erst, wenn ich die Größe des Applet-Fensters mit der Maus verändere.
Das heisst der Rest des Codes funktioniert, da ich das Spielfeld mit einem Array darstelle und beim initialisieren alles mit Nullen gefüllt ist. Erst mit dem Buttonklick wird die Schlange "aufs" Array gesetzt.

Die Paint-Methode durchforstet mittels for-Schleifen das Spielfeld nach != 0 und malt dann ein grünes Kästchen (soll die Schlange sein).

Hier ein bisschen code:
Java:
import java.awt.*;


public class GameArea extends Canvas
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private int fieldMax, feldgroesse;
	private static int gameAreaArray[][] = new int[20][20];
	private static boolean start;
	private Lines lines;
	private Snake snake;
	
	public GameArea()
	{	
		//Spielfeld initialisieren		
		this.setBackground(Color.black);  
		initField();
		lines = new Lines();
		snake = new Snake();
		start = false;
	}
		
	public void initField()
	{
		fieldMax    = 500;
		feldgroesse = fieldMax/20;
		for (int i=0; i<20 ;i++)
		{
			for(int j=0; j<20; j++)
			{gameAreaArray[i][j]=0;}
		}				
	}
	
	public void aktualGameAreaArray(int X, int Y, int Value)
	{
		gameAreaArray[X][Y] = Value;
	}
	
	public void aktualGameAreaField() //Button Klick
	{
		if (start == false)
		{
			for (int i=1;i<5;i++)
			{
				int x = 6+i;
				int y = 4;
				aktualGameAreaArray(x,y,i);
				snake.snakeDir(i, "East");
				System.out.println("Test");
			}
			System.out.println("repaint aufgerufen");
			[B]repaint();[/B]
			System.out.println("ausgeführt?");
			snake.setSnakeLength(4);
		}
	}
	
	public void [B]paint[/B] (Graphics g)
	{
		lines.paint(g, fieldMax); //gitterlinien
		
		for (int x=0;x<20;x++)
		{
			for(int y=0;y<20;y++)
			{
				if(gameAreaArray[x][y]>0)
				{

					snake.paint(g, x, y, feldgroesse); 
[I]//snake ist das Objekt, indem ich das kästchen male.[/I]
				}
			}
		}

	 }
}

bin wirklich ratlos, so weit ich weiss sollte es doch funktionieren... hab mit google geforstet aber nischt gefunden ;( - oder ich beherrsche die Kunst des suchens nicht.

Bin für jede Mühe dankbar :)
lg. Turmfalke
 

Turmfalke

Mitglied
25 Klicks, aber keiner kann mir helfen :(
Hätte ich mit google was gefunden, was mir helfen würde, dann würd ich hier auch nix fragen! Bei anderen Beispielen schien es zu fuktionieren. Ich verstehe nicht, weshalb bei mir nicht.
Ich möchte wirklich gerne weiter fortschreiten mit dem Spiel, aber ohne diesen Aspekt hat es keinen Sinn...
Also bitte gebt mir nurn Tipp, weshalb sich Canvas nicht aktualisiert bzw. repaint nicht die paint Methode in derselben Klasse ausführt ?!

Paint Methode in Zeile 61 und repaint in 55.
 
S

SlaterB

Gast
bau das ganze zu einem Frame um, füge den restlichen Code bis zur main-Methode hinzu,
und es können mehr als 5% alle Benutzer testen
 

Turmfalke

Mitglied
Erstmal danke für die Reaktion :)

hinter Snake steckt im Prinzip nur das Kästchen, gut das pack ich dann in die GameArea Klasse, hast recht.
Das Problem äußert sich wie folgt:

1.Zeichne Spielfeld, noch KEINE Schlange auf dem Feld! ->OK
2.Button Klick -> Schlange wird auf Startposition gesetzt (2D-Array) dann repaint in selber Methode. -> alles Ok
3. Methode fertig ausgeführt, aber es wird keine schlange angezeigt (paint wird nicht durch repaint ausgeführt)! ->Problem!

4. Erst wenn ich das Fenster vergrößer,kleiner,minimiere,maximiere oder mit nem anderen Fenster über das Spielfeld gehe und wieder zurück, wird (paint) ausgeführt
(So interpretier ich das zumindest...) und ich sehe die Schlange im Gitternetz des Spielfeldes.

@SlaterB: Ich werde versuchen sowas zu basteln, aber ich glaub, das könnte etwas dauern :oops: bin in Java noch relativ neu. .... oder blutiger Anfänger :D

lg. Turmfalke

Hoffentlich seht ihr das Problem, ich versteh es einfach nicht, da ich glaube, dass ich bereits bei Schritt 3 die Schlange sehen müsste ???:L
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
B Canvas erstellen Java Basics - Anfänger-Themen 4
D Erste Schritte Canvas verschwinden nicht mehr Java Basics - Anfänger-Themen 2
J Rechteck zeichnen mit Canvas Java Basics - Anfänger-Themen 7
S canvas zeichnet nichts Java Basics - Anfänger-Themen 7
B Wert aus TextFeld in Canvas benutzen Java Basics - Anfänger-Themen 0
E Java Canvas Zeichnung Java Basics - Anfänger-Themen 2
J BlueJ canvas Buttons adden? Java Basics - Anfänger-Themen 2
D Canvas löschen über MouseEntered in Textfeld Java Basics - Anfänger-Themen 6
S canvas Java Basics - Anfänger-Themen 9
T canvas killt KeyListener Java Basics - Anfänger-Themen 2
T canvas.setBackground(); Java Basics - Anfänger-Themen 2
U Zeichnen mit Canvas. Java Basics - Anfänger-Themen 5
A Canvas "löscht sich" Java Basics - Anfänger-Themen 14
G Bild in Panel oder canvas einfügen Java Basics - Anfänger-Themen 3
S Bild wird auf Canvas nicht angezeigt Java Basics - Anfänger-Themen 8
J Text auf Canvas zentrieren. Java Basics - Anfänger-Themen 4
F zeichnen auf Canvas will nicht klappen Java Basics - Anfänger-Themen 11
S NetBeans 6.0.1 / Zeichnen auf Canvas Java Basics - Anfänger-Themen 8
M Simple Animation funktioniert nicht (JFrame, Canvas, Thread) Java Basics - Anfänger-Themen 6
G Probleme mit JToolBar + Canvas Java Basics - Anfänger-Themen 6
Y Problem mit Canvas Java Basics - Anfänger-Themen 3
B 2 Canvas in einem JFrame Java Basics - Anfänger-Themen 2
philipp Problem mit Canvas Java Basics - Anfänger-Themen 5
S Canvas verkleinern -> Altes Stück Canvas wird weitergezei Java Basics - Anfänger-Themen 4
M Tooltips werden von Canvas "verschluckt" Java Basics - Anfänger-Themen 13
A wie füge ich eine Canvas in JFrame ein? Java Basics - Anfänger-Themen 11
C ein Canvas ist zu groß. mit Scrollbar ? Java Basics - Anfänger-Themen 8
L Canvas fokusieren Java Basics - Anfänger-Themen 4
C Problem mit Zeichnen auf einer extends Canvas Class... Java Basics - Anfänger-Themen 2
A Aktualisierung eines Buttons Java Basics - Anfänger-Themen 18
R Text Pane Aktualisierung erst nach JOptionPane Java Basics - Anfänger-Themen 10
C Array Aktualisierung wird nicht im Tooltip angezeigt Java Basics - Anfänger-Themen 2
M Gui Aktualisierung Java Basics - Anfänger-Themen 2
R aktualisierung des View im MVC-Pattern Java Basics - Anfänger-Themen 5
Private Void Auto-Aktualisierung der Zeitanzeige Java Basics - Anfänger-Themen 10
H Aktualisierung des JProgressBar in Abhängigkeit eines Threads Java Basics - Anfänger-Themen 5
G Fortlaufende Aktualisierung bei eigener Klasse Java Basics - Anfänger-Themen 2
G Aktualisierung von JTable Java Basics - Anfänger-Themen 4
I Problem mit Inhalt-Aktualisierung Java Basics - Anfänger-Themen 18
M Problem mit Aktualisierung von GridBagLayout Java Basics - Anfänger-Themen 2
D Wenn ich repaint(); mache, flackert es so stark, das man fast nichts erkennen kann. Java Basics - Anfänger-Themen 11
S Repaint() Java Basics - Anfänger-Themen 1
J Erste Schritte Mit repaint() ist Label nicht sichtbar Java Basics - Anfänger-Themen 15
S Repaint() in der Schleife funktioniert nicht immer Java Basics - Anfänger-Themen 5
H Graphics / repaint Java Basics - Anfänger-Themen 8
D Verhindern das repaint beim vergrößern aufgerufen wird Java Basics - Anfänger-Themen 9
M Liste mit repaint aktualisieren Java Basics - Anfänger-Themen 1
E Probleme mit repaint() Java Basics - Anfänger-Themen 15
K Erkennt repaint nicht Java Basics - Anfänger-Themen 1
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
1 repaint() Funktion erzeugt Flackern Java Basics - Anfänger-Themen 33
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
A externer repaint Aufruf Java Basics - Anfänger-Themen 9
G Problem mit repaint() Java Basics - Anfänger-Themen 2
J repaint() geht gar nicht; GUI aktualisieren Java Basics - Anfänger-Themen 10
J paint() vs repaint() Java Basics - Anfänger-Themen 3
C repaint wird nicht während Druck auf Maustaste ausgeführt. Java Basics - Anfänger-Themen 4
A Methoden repaint() zeichnet JPanel falsch Java Basics - Anfänger-Themen 3
P [JTable] Problem mit repaint() Java Basics - Anfänger-Themen 2
P Interpreter-Fehler Im for loop funkzioniert repaint nicht :( Java Basics - Anfänger-Themen 4
M repaint() in run-Methode funktioniert nicht Java Basics - Anfänger-Themen 9
O Probleme mit der repaint-Funktion Java Basics - Anfänger-Themen 6
W repaint() ruft paint() nicht auf Java Basics - Anfänger-Themen 9
J repaint() funktioniert nicht wie gewünscht Java Basics - Anfänger-Themen 30
I Hangman CardLayout/repaint? Java Basics - Anfänger-Themen 2
H Variablen Probleme mit repaint() Java Basics - Anfänger-Themen 2
Y im applet malen ohne repaint paint ? Java Basics - Anfänger-Themen 6
J repaint(); launisch ? Java Basics - Anfänger-Themen 3
E Altes Bild bei repaint() löschen? Java Basics - Anfänger-Themen 10
Z Wie repaint() bei Uhr realisieren? Java Basics - Anfänger-Themen 12
N JScrollPane repaint(); geht nicht Java Basics - Anfänger-Themen 4
I repaint bei jpanel Java Basics - Anfänger-Themen 10
T repaint wir nicht mehr geöffnet! Java Basics - Anfänger-Themen 38
C GUI aktualisieren: repaint, validate, Fenstergröße ändern bringt nichts Java Basics - Anfänger-Themen 13
Antoras Swing repaint und Nullpointer Java Basics - Anfänger-Themen 6
O repaint() wird nicht ausgeführt Java Basics - Anfänger-Themen 3
S problem mit repaint() in Thread Java Basics - Anfänger-Themen 6
Antoras swing und repaint-Ersatz Java Basics - Anfänger-Themen 8
G Automatischer repaint bei Swing so wie bei AWT? Java Basics - Anfänger-Themen 7
M Problem mit repaint Java Basics - Anfänger-Themen 2
R Probleme beim Repaint Java Basics - Anfänger-Themen 3
T repaint einer komponente Java Basics - Anfänger-Themen 2
E repaint() aufrufen Java Basics - Anfänger-Themen 12
F paintComponent mit repaint() aufrufen Java Basics - Anfänger-Themen 27
kulturfenster Probleme mit repaint() Java Basics - Anfänger-Themen 2
S SelectionListener + repaint().Verständnisproblem ;) Java Basics - Anfänger-Themen 7
K Repaint() in Methode Java Basics - Anfänger-Themen 13
G Frage zu repaint() Java Basics - Anfänger-Themen 5
D JPanel repaint() wird nicht gemacht! Java Basics - Anfänger-Themen 7
B Problem mit repaint() Java Basics - Anfänger-Themen 8
V Reihenfolge von Befehlen - hier repaint() zu spät Java Basics - Anfänger-Themen 13
G repaint in paint aufrufen? Java Basics - Anfänger-Themen 9
F repaint() - Methode verzögern lassen? Java Basics - Anfänger-Themen 3
I Erst repaint() dann zeichnen? Java Basics - Anfänger-Themen 6
D von paint() und repaint() im Applet Java Basics - Anfänger-Themen 4
J probleme mit repaint Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben