Class Layer
- Direct Known Subclasses:
ColorLayer
,DrawableLayer
,DrawingLayer
,ImageLayer
,ShapesLayer
,TurtleLayer
Zeichenleinwand
.
Die Zeichenleinwand
besteht aus einer Reihe von Ebenen, die
übereinandergelegt und von "unten" nach "oben" gezeichnet werden. Die Inhalte
der oberen Ebenen können also Inhalte der darunterliegenden verdecken.
Ebenen sind ein zentraler Bestandteil bei der Implementierung einer
Zeichenmaschine
. Sie erben von Constants
, da neue Ebenentypen
von Nutzern implementiert werden können.
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
Ob die Ebene aktiv ist, alsoUpdates
empfangen soll.protected BufferedImage
Interner Puffer für die Ebene, der einmal pro Frame auf die Zeichenleinwand übertragen wird.protected Graphics2D
Der Grafikkontext der Ebene, der zum Zeichnen der Inhalte verwendet wird.protected boolean
Ob die Ebene derzeit sichtbar ist.Fields inherited from class schule.ngb.zm.Constants
APP_NAME, APP_VERSION, APP_VERSION_MAJ, APP_VERSION_MIN, APP_VERSION_REV, ARROW, BEVEL, BLACK, BLUE, BOLD, BROWN, canvasHeight, canvasWidth, CENTER, CLOSED, cmouseX, cmouseY, CROSS, CYAN, DARKGRAY, DASHED, DEFAULT_ANIM_RUNTIME, DEFAULT_BACKGROUND, DEFAULT_BUFFER, DEFAULT_EASING, DEFAULT_FILLCOLOR, DEFAULT_FONTSIZE, DEFAULT_FPS, DEFAULT_HEIGHT, DEFAULT_STROKECOLOR, DEFAULT_STROKEWEIGHT, DEFAULT_WIDTH, delta, DOTTED, DOWN, DOWNLEFT, DOWNRIGHT, EAST, FILLED, framesPerSecond, GRAY, GREEN, HALF_PI, HAND, ITALIC, key, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_A, KEY_ALT, KEY_B, KEY_BACK_SPACE, KEY_C, KEY_CANCEL, KEY_CAPS_LOCK, KEY_CLEAR, KEY_COMMA, KEY_CONTROL, KEY_D, KEY_DOWN, KEY_E, KEY_END, KEY_ENTER, KEY_EQUALS, KEY_ESCAPE, KEY_F, KEY_G, KEY_H, KEY_HOME, KEY_I, KEY_J, KEY_K, KEY_L, KEY_LEFT, KEY_M, KEY_MINUS, KEY_N, KEY_O, KEY_P, KEY_PAGE_DOWN, KEY_PAGE_UP, KEY_PAUSE, KEY_PERIOD, KEY_Q, KEY_R, KEY_RIGHT, KEY_S, KEY_SEMICOLON, KEY_SHIFT, KEY_SLASH, KEY_SPACE, KEY_T, KEY_TAB, KEY_U, KEY_UP, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, keyCode, keyEvent, keyPressed, LEFT, LIGHTGRAY, LINES, LINUX, MACOS, MAGENTA, MIDDLE, MITER, MOUSE1, MOUSE2, MOUSE3, mouseButton, mouseEvent, mousePressed, mouseX, mouseY, MOVE, NOMOUSE, NORTH, NORTHEAST, NORTHWEST, OPEN, ORANGE, PI, PIE, PINK, PLAIN, pmouseX, pmouseY, PURPLE, QUARTER_PI, RED, RIGHT, ROUND, runtime, screenHeight, screenWidth, SOLID, SOUTH, SOUTHEAST, SOUTHWEST, TEXT, tick, TWO_PI, UP, UPLEFT, UPRIGHT, WAIT, WEST, WHITE, WINDOWS, YELLOW
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Leert die Ebene und löscht alles bisher gezeichnete.void
dispose()
Gibt die Ressourcen der Ebene frei.void
draw
(Graphics2D graphics) Zeichnet den Puffer auf den Grafikkontext.int
int
getWidth()
void
hide()
Versteckt die Ebene.boolean
isActive()
Gibt an, ob das Objekt gerade auf Aktualisierungen reagiert.boolean
isInBounds
(int x, int y) Prüft, ob die angegebenen Koordinaten innerhalb der Ebene liegen, oder nicht.boolean
Gibt an, ob das Objekt derzeit sichtbar ist (also gezeichnet werden muss).void
setSize
(int width, int height) Ändert die Größe der Ebene auf die angegebenen Maße.void
show()
Zeigt die Ebene an, falls sie versteckt war.void
toggle()
Versteckt oder zeigt die Ebene, je nachdem, welchen Zustand sie derzeit hat.void
update
(double delta) Änderung des Zustandes des Objekts abhängig vom Zeitintervalldelta
in Sekunden.Methods inherited from class schule.ngb.zm.Constants
abs, arccos, arcsin, arctan, asBool, asBool, asBool, asBool, asBool, asBool, asBool, asBool, asBool, asDouble, asDouble, asDouble, asDouble, asDouble, asDouble, asDouble, asDouble, asDouble, asInt, asInt, asInt, asInt, asInt, asInt, asInt, asInt, asInt, avg, binary, ceil, choice, choice, choice, choice, color, color, color, color, colorHsb, colorHsl, cos, degrees, distance, floor, fromBinary, fromHex, getRandom, hex, interpolate, limit, limit, loadImage, map, max, max, min, min, morph, noise, noise, noise, noise, pow, radians, random, random, random, random, random, randomBool, randomBool, randomBool, randomColor, randomGaussian, randomNiceColor, round, setSeed, shuffle, shuffle, shuffle, shuffle, sign, sin, sqrt, sum, tan
-
Field Details
-
buffer
Interner Puffer für die Ebene, der einmal pro Frame auf die Zeichenleinwand übertragen wird. -
drawing
Der Grafikkontext der Ebene, der zum Zeichnen der Inhalte verwendet wird. -
visible
protected boolean visibleOb die Ebene derzeit sichtbar ist. -
active
protected boolean activeOb die Ebene aktiv ist, alsoUpdates
empfangen soll.
-
-
Constructor Details
-
Layer
public Layer()Erstellt eine neue Ebene mit den Standardmaßen. -
Layer
public Layer(int width, int height) Erstellt eine neue Ebene mit den angegebenen Maßen.- Parameters:
width
- Die Breite der Ebene.height
- Die Höhe der Ebene.
-
-
Method Details
-
getWidth
public int getWidth()- Returns:
- Die Breite der Ebene.
-
getHeight
public int getHeight()- Returns:
- Die Höhe der Ebene.
-
setSize
public void setSize(int width, int height) Ändert die Größe der Ebene auf die angegebenen Maße.- Parameters:
width
- Die neue Breite.height
- Die neue Höhe.
-
getGraphics
-
dispose
public void dispose()Gibt die Ressourcen der Ebene frei. -
clear
public void clear()Leert die Ebene und löscht alles bisher gezeichnete. Alle Pixel der Ebene werden transparent, damit unterliegende Ebenen durchscheinen können. -
draw
Zeichnet den Puffer auf den Grafikkontext. -
isVisible
public boolean isVisible()Description copied from interface:Drawable
Gibt an, ob das Objekt derzeit sichtbar ist (also gezeichnet werden muss).Wie mit dieser Information umgegangen wird, ist nicht weiter festgelegt. In der Regel sollte eine aufrufende Instanz zunächst prüfen, ob das Objekt aktiv ist, und nur dann
Drawable.draw(Graphics2D)
aufrufen. Für implementierende Klassen ist es aber gegebenenfalls auch sinnvoll, bei Inaktivität den Aufruf vondraw(Graphics2D)
schnell abzubrechen:void draw( Graphics2D graphics ) { if( !isVisible() ) { return; } // Objekt zeichnen.. }
-
hide
public void hide()Versteckt die Ebene. -
show
public void show()Zeigt die Ebene an, falls sie versteckt war. -
toggle
public void toggle()Versteckt oder zeigt die Ebene, je nachdem, welchen Zustand sie derzeit hat. -
update
public void update(double delta) Description copied from interface:Updatable
Änderung des Zustandes des Objekts abhängig vom Zeitintervalldelta
in Sekunden.Die kann, muss aber nicht, die Rückgabe von
Updatable.isActive()
berücksichtigen. -
isActive
public boolean isActive()Description copied from interface:Updatable
Gibt an, ob das Objekt gerade auf Aktualisierungen reagiert.Wie mit dieser Information umgegangen wird, ist nicht weiter festgelegt. In der Regel sollte eine aufrufende Instanz zunächst prüfen, ob das Objekt aktiv ist, und nur dann
Updatable.update(double)
aufrufen. Für implementierende Klassen ist es aber gegebenenfalls auch sinnvoll, bei Inaktivität den Aufruf vonupdate(double)
schnell abzubrechen:void update( double delta ) { if( !isActive() ) { return; } // Aktualisierung ausführen.. }
-
isInBounds
public boolean isInBounds(int x, int y) Prüft, ob die angegebenen Koordinaten innerhalb der Ebene liegen, oder nicht.Eine Koordinate liegt in der Ebene, wenn die
x
- undy
-Koordinaten größer oder gleich Null und kleiner als die Breite bzw. Höhe der Ebene sind.- Parameters:
x
- Die x-Koordinate.y
- Die y-Koordinate.- Returns:
true
, wenn die Koordinaten innerhalb der Ebene liegen,false
, wenn sie außerhalb liegen.
-