Samstag, 21. Dezember 2013

Die wichtigsten Controls sind fertig

Endlich habe ich die Scrollbar und die Liste fertig. Zum Schluss galt es noch beides zu verbinden, was aber nicht so schwer war ( ist halt gut programmiert ;) ).
Davor hatte ich dann schon das Label und die CheckBox fertig, wollte aber alles in einen Post unterbringen. Mir ist dann ( als ich den Post soweit fertig hatte ) eingefallen, dass ich die Input-Box ganz verbessen hatte ;) , die hab ich dann auch noch schnell gemacht.


List-Control 


Aufbau:
  • Jede Zeile ist unterstrichen
  • Kein automatischer Umbruch ( bei zu langen Zeilen )
    • evtl. später
Methoden ( public ):
  • ListBox(...);
    • verschiedene Parameter stehen bereit
  • void Update(GameTime gameTime);
  • void Draw();
  • void Add(String);
  • void Delete(String);
    • noch nicht implementiert, da ich noch gucke, wie ich das am besten mache ( nach Eintrag suchen, oder statt den Eintrag als String doch lieber die Zeile als Integer übergeben ...)
Liste erstellen:

public ListBox(Window windowHandle, String Title, Rectangle position, Texture2D Texture, SpriteFont Font, Color fontColor, SpriteBatch spriteBatch)
public ListBox(Window windowHandle, String Title, Rectangle position, Texture2D Texture, Color fontColor, SpriteBatch spriteBatch)
public ListBox(Window windowHandle, String Title, Rectangle position, Texture2D Texture, SpriteFont Font, SpriteBatch spriteBatch)
public ListBox(Window windowHandle, String Title, Rectangle position, Texture2D Texture, SpriteBatch spriteBatch)
public ListBox(Window windowHandle, String Title, Rectangle position, Color fontColor, SpriteBatch spriteBatch)
public ListBox(Window windowHandle, String Title, Rectangle position, SpriteFont Font, SpriteBatch spriteBatch)
public ListBox(Window windowHandle, String Title, Rectangle position, SpriteBatch spriteBatch)
public ListBox(Window windowHandle, Rectangle position, SpriteBatch spriteBatch)


Label-Control


Aufbau:
String an bestimmter Position zeichnen, fertig ;)

Methoden ( public ):
  • Label(...);
    • verschiedene Parameter stehen bereit
  • void Draw();
Label erstellen:

public Label(Window windowHandle, String text, Vector2 Position, SpriteBatch spriteBatch, SpriteFont font, Color color)
public Label(Window windowHandle, String text, Vector2 Position, SpriteBatch spriteBatch, SpriteFont font)
public Label(Window windowHandle, String text, Vector2 Position, SpriteBatch spriteBatch, Color color)
public Label(Window windowHandle, String text, Vector2 Position, SpriteBatch spriteBatch)


Scrollbar-Control


Aufbau:
Erzeugt ein Scrollbalken, der unabhängig von einem anderen Control dargestellt wird.

Methoden ( public ):
  • ScrollBar(Rectangle Position, int ReferenceHeight, SpriteBatch spriteBatch);
  • void Update(GameTime gameTime);
  • void Draw();
  • void SetReferenceHeight(int ReferenceHeight);
ReferenceHeight:
Dieser Wert gibt an, wie hoch der Bereich ist, auf den die Scrollbar Einfluss nehmen soll.
  • Bsp.: Ich habe eine Liste, die 300 Pixel hoch ist. Die Einträge alle untereinander gezeichnet sind aber 500 Pixel hoch, so ist meine Referenz-Höhe ( ReferenceHeight ) 500. 
Das Scrollbar-Control erstellt nun ausgehen von diesem Wert die Höhe des Balkens.

Auslesen des Balkens:
Die Position des Balkens ( die Y-Position ) bestimmt schließlich die hoch der Referenzbereich ( also z.B. der Listeninhalt ) hoch/runter geschoben werden soll. Hierzu wird die Höhe nicht in Pixel, sondern als Dezimalzahl zwischen 0 und 1 angegeben. Bei 0 befindet sich der Balken ganz oben, bei 1 ganz unten, bei 0,5 somit genau in der Mitte.
Die Verschiebung muss dann im Code des Referenz-Controls ( z.B. der Liste ) stattfinden.
Setzen kann man diese Höhe mit dem Befehl: SetReferenceHeight(int ReferenceHeight);

Scrollbar erstellen:

public ScrollBar(Rectangle Position, int ReferenceHeight, SpriteBatch spriteBatch)


CheckBox-Control


Aufbau:
Stellt eine typische Checkbox dar, die den Zustand "gecheckt" oder "nicht-gecheckt" haben kann.

Methoden ( public ):
  • CheckBox(...);
  • Boolean Hover();
  • Boolean IsPressed();
  • void Draw(); 
Auslesen des Zustandes:
Einfach auf den Boolean Checked zugreifen ( ist public ).
True - ist gecheckt
False - ist nicht gecheckt

Erstellen einer CheckBox:

public CheckBox(Window windowHandle, String text, Rectangle position, SpriteFont font, Texture2D texture, Texture2D texture_point, Color? fontColor, Color? pointColor, Boolean check, SpriteBatch spriteBatch)
public CheckBox(Window windowHandle, String text, Rectangle position, SpriteFont font, Texture2D texture, Texture2D texture_point, Boolean check, SpriteBatch spriteBatch)
public CheckBox(Window windowHandle, String text, Rectangle position, SpriteFont font, Color? pointColor, Color? fontColor, Boolean check, SpriteBatch spriteBatch)
public CheckBox(Window windowHandle, String text, Rectangle position, SpriteFont font, Boolean check, SpriteBatch spriteBatch)
public CheckBox(Window windowHandle, Rectangle position, Texture2D texture, Texture2D texture_point, Color? fontColor, Color? pointColor, Boolean check, SpriteBatch spriteBatch)
public CheckBox(Window windowHandle, Rectangle position, Texture2D texture, Texture2D texture_point, Boolean check, SpriteBatch spriteBatch)
public CheckBox(Window windowHandle, Rectangle position, Color? pointColor, Color? fontColor, Boolean check, SpriteBatch spriteBatch)
public CheckBox(Window windowHandle, Rectangle position, Boolean check, SpriteBatch spriteBatch)


Input-Control


Aufbau:
Stellt ein Eingabefeld dar, in dem man bisher alle Buchstaben ( groß & klein, inkl. Umlaute ), alle
Zahlen, sowie die meisten Sonderzeichen der deutschen Standard-Tastatur eingeben kann.

Methoden ( public ):
  • Input(...);
  • void Update(GameTime gameTime);
  • void Draw();
  • void SetPosition(Rectangle newPosition);
  • void SetState(Boolean newState); // (De-)aktiviert das Feld
Auslesen der Eingabe:
Es steht einer anderen Klasse der String Text zur Verfügung, dieser beinhaltet die Eingabe.

Erstellen eines Input-Feldes:

public Input(Window windowHandle, Rectangle Position, String Text, SpriteBatch spriteBatch)
public Input(Window windowHandle, Rectangle Position, String Text, Boolean Enabled, SpriteBatch spriteBatch)
public Input(Window windowHandle, Rectangle Position, String Text, Boolean Enabled, Color color, SpriteBatch spriteBatch)
public Input(Window windowHandle, Rectangle Position, String Text, Boolean Enabled, Color color, Texture2D texture, SpriteBatch spriteBatch)
public Input(Window windowHandle, Rectangle Position, String Text, Boolean Enabled, Texture2D texture, SpriteBatch spriteBatch)


Was als nächstes kommt


  • Evtl. mehrzeilige Input-Felder
  • Kleinigkeiten
    • Nicht endlos kleine ScrollBar-Balken ( ist theoretisch möglich ;) )
    • Löschen von Listeneinträgen
Ich hoffe ihr findet die Controls mit den Texturen soweit ganz gut ( mir gefallen sie wohl, hab auch immer mal wieder Kleinigkeiten an den Grafiken gefeilt ).
Falls ihr Ideen, Anmerkungen, etc. hab schreibt mit ruhig Kommentare oder eine E-Mail ( s. Kontakt ).

mfg
Hauke

Ps.: Das ist der 100ste Post auf diesem Blog^^ 

Keine Kommentare:

Kommentar veröffentlichen