Package schule.ngb.zm

Class Layer

All Implemented Interfaces:
Drawable, Updatable
Direct Known Subclasses:
ColorLayer, DrawableLayer, DrawingLayer, ImageLayer, ShapesLayer, TurtleLayer

public abstract class Layer extends Constants implements Drawable, Updatable
Basisklasse für Ebenen der 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 Details

    • buffer

      protected BufferedImage buffer
      Interner Puffer für die Ebene, der einmal pro Frame auf die Zeichenleinwand übertragen wird.
    • drawing

      protected Graphics2D drawing
      Der Grafikkontext der Ebene, der zum Zeichnen der Inhalte verwendet wird.
    • visible

      protected boolean visible
      Ob die Ebene derzeit sichtbar ist.
    • active

      protected boolean active
      Ob die Ebene aktiv ist, also Updates 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

      public Graphics2D 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

      public void draw(Graphics2D graphics)
      Zeichnet den Puffer auf den Grafikkontext.
      Specified by:
      draw in interface Drawable
      Parameters:
      graphics - Der Grafikkontext, auf den gezeichnet wird.
    • 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 dannDrawable.draw(Graphics2D) aufrufen. Für implementierende Klassen ist es aber gegebenenfalls auch sinnvoll, bei Inaktivität den Aufruf von draw(Graphics2D) schnell abzubrechen:

      
       void draw( Graphics2D graphics ) {
           if( !isVisible() ) {
               return;
           }
      
           // Objekt zeichnen..
       }
       
      Specified by:
      isVisible in interface Drawable
      Returns:
      true, wenn das Objekt sichtbar ist.
    • 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 Zeitintervall delta in Sekunden.

      Die kann, muss aber nicht, die Rückgabe von Updatable.isActive() berücksichtigen.

      Specified by:
      update in interface Updatable
      Parameters:
      delta - Zeitintervall seit dem letzten Aufruf (in Sekunden).
    • 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 dannUpdatable.update(double) aufrufen. Für implementierende Klassen ist es aber gegebenenfalls auch sinnvoll, bei Inaktivität den Aufruf von update(double) schnell abzubrechen:

      
       void update( double delta ) {
           if( !isActive() ) {
               return;
           }
      
           // Aktualisierung ausführen..
       }
       
      Specified by:
      isActive in interface Updatable
      Returns:
      true, wenn das Objekt aktiv ist, false andernfalls.
    • 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- und y-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.