public class Kamera
extends java.lang.Object
Die Kamera “blickt” auf die Zeichenebene, das was sie sieht beschreibt den Teil der Zeichenebene; das, was im Fenster dargestellt wird.
Sie kann ein Objekt fokussieren und ihm so folgen. Hierbei besteht auch die Moeglichkeit, diesen Fokus in Grenzen zu halten. Und zwar durch die Fokus-Bounds. Diese 4 Grenzwerte koennen individuell verstellt und aktiviert werden. auch kann man den von der Kamera darzustellenden Bereich durch eine einzige Methode definieren, in dem man den Bereich als BoundingRechteck beschreibt.
BoundingRechteck grenzen = new BoundingRechteck(0, 0, 1500, 1000);
meineCam.boundsSetzen(grenzen);
Hierdurch wird automatisch der gesamte Fokusapparat (auf den Bereich zwischen den Punkten (0|0) und (1500|1000) ) eingestellt. Bei spezielleren Fokuswuenschen laesst sich dies ebenfalls arrangieren durch die einzelnen Methoden, mit denen alle vier Bounds (N, S, O, W) einzeln verstellt und (de)aktiviert werden koennen.
!!Achtung!!
Bei den Fokuseinstellungen sollte immer ein Bereich gewaehlt werden, der die Groesse des Anzeigefensters (oder Vollbildes) bei weitem uebersteigt.
Allgemein wirken diese Bounds auch ohne aktivierten Fokus. jedoch ist dies meist weniger sinnvoll.
Constructor and Description |
---|
Kamera(int sizeX,
int sizeY,
Zeichenebene z)
Konstruktor fuer Objekte der Klasse Kamera
|
Modifier and Type | Method and Description |
---|---|
void |
boundsSetzen(BoundingRechteck r)
Mit dieser Methode kann man direkt saemtliche Kamera-Bounds-Einstellungen machen.
|
void |
fokusLoeschen()
Loescht den Fokus.
|
void |
fokusSetzen(Raum r)
Setze einen Fokus der Kamera auf ein Objekt.
|
void |
fokusVerzugSetzen(Vektor v)
Setzt einen Fokus-Verzug.
|
int |
getX() |
int |
getY() |
void |
hatBoundsSetzen(boolean b)
Setzt, ob das Fokusverhalten durch Bounds begrenzt wird.
|
boolean |
hatFokus() |
void |
loescheFokus()
Loescht den Fokus.
|
BoundingRechteck |
position()
Die aktuelle Position der Kamera wird zurueckgegeben.
|
void |
positionSetzen(float x,
float y)
Setzt die Position der linken oberen Ecke der Kameraperspektive.
|
void |
positionSetzen(Punkt p)
Setzt die Position der linken oberen Ecke der Kameraperspektive.
|
void |
setzeFokus(Raum r)
Setze einen Fokus der Kamera auf ein Objekt.
|
void |
verschieben(int x,
int y)
Verschiebt die Kamera um einen bestimmten Wert in X- und Y-Richtung.
|
void |
verschieben(Vektor v)
Verschiebt die Kamera um einen bestimmten Wert in X- und Y-Richtung.
|
Knoten |
wurzel() |
void |
zeichne(java.awt.Graphics2D g)
Zeichnet alle Objekte neu, die sich auf der Zeichenebene und im Blickfeld der Kamera befinden.
|
void |
zentrumSetzen(int x,
int y)
Setzt das Zentrum der Kamera.
|
void |
zentrumSetzen(Punkt zentrum)
Setzt das Zentrum der Kamera.
|
public Kamera(int sizeX, int sizeY, Zeichenebene z)
Konstruktor fuer Objekte der Klasse Kamera
sizeX
- Die X-Laenge des FensterssizeY
- Die Y-Laenge des Fensterspublic void setzeFokus(Raum r)
Setze einen Fokus der Kamera auf ein Objekt.
Dieses Objekt ist ab dann im ‘Zentrum’ der Kamera.
Die Art des Fokus (vorne, hinten, oben, unten, mittig etc…) kann ueber die Methode setzeFokusArt() geaendert werden.
Soll das Fokusverhalten beendet werden, muss die paramterlose Methode loescheFokus() ausgefuehrt werden; dann bleibt die Kamera bis auf weiteres in der letzten Position.
r
- Der Fokuspunkt.public void fokusSetzen(Raum r)
Setze einen Fokus der Kamera auf ein Objekt.
Dieses Objekt ist ab dann im ‘Zentrum’ der Kamera.
Die Art des Fokus (vorne, hinten, oben, unten, mittig etc…) kann ueber die Methode setzeFokusArt() geaendert werden.
Soll das Fokusverhalten beendet werden, muss die paramterlose Methode loescheFokus() ausgefuehrt werden; dann bleibt die Kamera bis auf weiteres in der letzten Position.
Diese Methode wrappt lediglich setzeFokus(Raum)
, wurde daher zur verhinderung des Orientierungsverlustes geschrieben.
r
- Der Fokuspunkt.setzeFokus(Raum)
public void fokusVerzugSetzen(Vektor v)
Setzt einen Fokus-Verzug. Der Standartwert hierfuer ist (0|0).
Der Fokusverzug ist ein Vektor, um den das Bild, das den Fokus exakt im Zentrum hat, verschoben wird.
Das heisst, dass eine FIgur im Fokus um 100 Pixel tiefer als im Absoluten Bildzentrum liegt, wenn der Fokusverzug mit folgender Methode gesetzt wurde:
/Irgendwo in der spielsteuernden Klasse /
cam.fokusVerzugSetzen(new Vektor(0, -100));
v
- Der Vektor, um den ab sofort die Kamera vom Zentrum des Fokus verschoben wird.public void hatBoundsSetzen(boolean b)
Setzt, ob das Fokusverhalten durch Bounds begrenzt wird.
b
- Ob die gesetzten Minimum- und Maximum-Werte auch aktiviert werden sollen.boundsSetzen(BoundingRechteck)
public void boundsSetzen(BoundingRechteck r)
Mit dieser Methode kann man direkt saemtliche Kamera-Bounds-Einstellungen machen.
Ein Bounding-Rechteck gibt die Begrenzung an, die die Kameraperspektive, solange die Bounds nicht deaktiviert werden (ueber die Methode hatBoundsSetzen
moeglich), niemals uebertreten wird.
r
- Das BoundingRechteck, das die Begrenzung des Raumes angibthatBoundsSetzen(boolean)
public void loescheFokus()
Loescht den Fokus.
Die Kamera bleibt in ihrer letzten Position zurueck.
public void fokusLoeschen()
Loescht den Fokus.
Die Kamera bleibt in ihrer letzten Position zurueck bis entweder ein neuer Fokus gesetzt wird oder sie einfach nur verschoben wird.
Diese Methode macht das selbe wie loescheFokus
, und ist wegen einer einheitlichen Schreibweise eingeführt.
loescheFokus()
public boolean hatFokus()
public void verschieben(Vektor v)
Verschiebt die Kamera um einen bestimmten Wert in X- und Y-Richtung.
v
- Der die Bewegung beschreibende Vektor.verschieben(int, int)
public void verschieben(int x, int y)
Verschiebt die Kamera um einen bestimmten Wert in X- und Y-Richtung.
Alternative Methode fuer diejenigen, denen ein Vektor zu umstaendlich ist.
x
- Die Verschiebung in X-Richtungy
- Die Verschiebung in Y-Richtungverschieben(Vektor)
public void zentrumSetzen(Punkt zentrum)
Setzt das Zentrum der Kamera. Von nun an ist der Eingegebene Punkt im Zentrum des Bildes.
zentrum
- Das neue Zentrum der KamerazentrumSetzen(int, int)
public void zentrumSetzen(int x, int y)
Setzt das Zentrum der Kamera. Von nun an ist der Punkt mit den eingegebenen Koordinaten im Zentrum des Bildes.
x
- Die X-Koordinate des Zentrums des Bildesy
- Die Y-Koordinate des Zentrums des BildeszentrumSetzen(Punkt)
public void positionSetzen(float x, float y)
Setzt die Position der linken oberen Ecke der Kameraperspektive.
x
- Die X-Koordinate der linken oberen Ecke der Kameraperspektivey
- Die Y-Koordinate der linken oberen Ecke der KameraperspektivepositionSetzen(Punkt)
public void positionSetzen(Punkt p)
Setzt die Position der linken oberen Ecke der Kameraperspektive.
x
- Die X-Koordinate der linken oberen Ecke der Kameraperspektivey
- Die Y-Koordinate der linken oberen Ecke der KameraperspektivepositionSetzen(float, float)
public Knoten wurzel()
public BoundingRechteck position()
Die aktuelle Position der Kamera wird zurueckgegeben.
public int getX()
public int getY()
public void zeichne(java.awt.Graphics2D g)
Zeichnet alle Objekte neu, die sich auf der Zeichenebene und im Blickfeld der Kamera befinden.