JFrame problem

Ganz einfach. Du hast doch selbst dx und dy eingebaut. Wenn die beiden Werte als Offset für die Verschiebung stehen (und nach meinem bisherigem Kenntnisstand ist das so), dann kann man das in der paintComponent-Methode so machen:
Java:
@Override
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		Graphics2D g2d = (Graphics2D)g;

		if(fields == null) return;
		for(int i = 0; i < fields.length; i++) {
			if(fields[i] == null) {
				continue;
			}

			for(int j = 0; j < fields[i].length; j++) {
				Field field = fields[i][j];
				if(field == null) {
					continue;
				}

				g2d.drawImage(field.getImage(), offsetX + field.x, offsetY + field.y, this);
			}
		}
	}
Die move-Methode muss dann natürlich weg, da das dann nicht mehr passt.

Wie du siehst, ist das etwas anders als bei dir. Ich habe z.B. für ein Feld auch eine entsprechende Klasse Field erstellt, damit es sauberer wird. Diese sieht so aus:
Java:
package de.tutorials.forum.help.javaman13.gott;

import java.awt.Image;

public class Field {
	private Image	image;
	public int		x;
	public int		y;
	public int		spanX	= 1;
	public int		spanY	= 1;

	/**
	 * Gets the image.
	 * 
	 * @return the image
	 */
	public Image getImage() {
		return image;
	}

	/**
	 * Gets the spanX.
	 * 
	 * @return the spanX
	 */
	public int getSpanX() {
		return spanX;
	}

	/**
	 * Gets the spanY.
	 * 
	 * @return the spanY
	 */
	public int getSpanY() {
		return spanY;
	}

	/**
	 * Gets the x.
	 * 
	 * @return the x
	 */
	public int getX() {
		return x;
	}

	/**
	 * Gets the y.
	 * 
	 * @return the y
	 */
	public int getY() {
		return y;
	}

	/**
	 * Sets the image.
	 * 
	 * @param image
	 *            the image to set
	 */
	public void setImage(Image image) {
		this.image = image;
	}

	/**
	 * Sets the spanX.
	 * 
	 * @param spanX
	 *            the spanX to set
	 */
	public void setSpanX(int spanX) {
		this.spanX = spanX;
	}

	/**
	 * Sets the spanY.
	 * 
	 * @param spanY
	 *            the spanY to set
	 */
	public void setSpanY(int spanY) {
		this.spanY = spanY;
	}

	/**
	 * Sets the x.
	 * 
	 * @param x
	 *            the x to set
	 */
	public void setX(int x) {
		this.x = x;
	}

	/**
	 * Sets the y.
	 * 
	 * @param y
	 *            the y to set
	 */
	public void setY(int y) {
		this.y = y;
	}
}
 
Danke, hab alles verstanden. Nur eines nicht. Was ist offsetX und offsetY?
Sonst alles super!
LG
javaman
EDIT: Meintest du damit vielleicht spanX und spanY?
 
Zuletzt bearbeitet:
Nein, die offsets sind für die Verschiebung zuständig, also um wie viel Pixel der Hintergrund versetzt gezeichnet werden muss. Bei dir waren dafür dx und dy zusändig. Und spanX/Y sind wieder was ganz anderes. Ich hatte die bei mir zu Versuchszwecken eingebaut, weil wenn ich z.B. das Schloss nehme, dann kann ich das ja schlecht "nur" als ein Feld draufmachen. Würde größer, also auf mehreren Feldern, sicher mehr Spaß machen ... spanX ist eben für die Spalten und spanY für die Zeilen gedacht, sprich wenn spanX == 3 ist, dann würde das entsprechende Feld eben drei Spalten breit sein und nicht nur eine. Ist für dich aber vielleicht nicht so relevant, weiß ich ja nicht. Das war nur ein wenig Rumspielerei, mehr nicht.
 
Es ist aber eine gute idee!
Ich meinte halt nur, weil spanX initialisiert wurde, aber nicht benutzt, und offsetX benutzt aber nicht initialisiert wurde.
LG
javaman
bist vielleicht auf skype oder so was****?
 
Zuletzt bearbeitet:
Du hast ja auch nicht den gleichen Code vor der Nase wie ich, bei mir wird es verwendet.

Ja, habe alles Mögliche. In Skype heiße ich auch Akeshihiro.
 
Gar keins ... Du wirst das Bild von deinem Figur auch in Level zeichnen müssen. Der wird aber dann nicht von der Verschiebung beeinflusst sein dürfen, da er sonst fest auf dem Level festgesetzt würde und somit nicht "laufen" könnte.
 
War irgendwie klar... :D
Ein letztes Problem hätte ich noch :(
Wenn man beginnt zu laufen, macht er zuerst einen Schritt, bleibt dann ganz kurz stehen und geht dann ganz normal weiter. Kann man das irgendwie ändern?
LG
javaman
 
Zurück