pyxen.Text
Rendert einen Textstring auf einem Entity unter Verwendung einer Bitmap-Schriftart.
Text-Entities verwenden einen Schrift-Atlas zum Rendern — jedes Zeichen wird als Quad aus der Atlas-Textur gezeichnet.
Konstruktor
Text(
content,
*,
font="_default",
color=None,
align="left"
)
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
content | str | Der anzuzeigende Textstring |
font | str | Name des Schrift-Assets (Standard: eingebaute Schriftart) |
color | (r, g, b, a) | Einfärbefarbe (Standard: Weiß) |
align | str | Textausrichtung: "left", "center" oder "right" |
content (Erforderlich)
Der zu rendernde Textstring.
Text("Hello World")
font (Optional)
Name des zu verwendenden Schrift-Assets. Wenn weggelassen, wird die eingebaute Standardschrift verwendet.
Text("Score: 0", font="myfont")
Ein Schrift-Asset besteht aus einem .font.json-Deskriptor und einem .font.png-Atlasbild.
color (Optional)
Färbt den gerenderten Text ein.
Text("Warning!", color=(1, 0, 0, 1))
Standard: (1.0, 1.0, 1.0, 1.0) (Weiß, vollständig deckend).
align (Optional)
Steuert die horizontale Textausrichtung relativ zur Entity-Position.
Text("Centered", align="center")
| Wert | Beschreibung |
|---|---|
"left" | Text beginnt an der Entity-Position (Standard) |
"center" | Text ist zentriert auf der Entity-Position |
"right" | Text endet an der Entity-Position |
Text zuweisen
Du kannst beim Erstellen zuweisen:
label = world.spawn(
text=Text("Score: 0"),
x=10, y=10, layer=200
)
Oder nachträglich:
label.text = Text("Game Over", color=(1, 0, 0, 1))
Text zur Laufzeit aktualisieren
Greife über das Entity auf die Text-Komponente zu, um Eigenschaften zu ändern:
label.text.content = "Score: 100"
label.text.color = (1, 1, 0, 1)
label.text.align = "center"
Ausblenden und Einfärben
alpha, r, g und b einer Text-Entität lassen sich wie bei einem Sprite tweenen (siehe entity.tween()): Ein aufpoppender Punktestand blendet aus, ohne jeden Frame text.color zu setzen:
label.tween("alpha", to=0, duration=0.4, delay=0.3) # der Punktestand blendet nach kurzem aus
label.tween("b", to=0, duration=0.2) # Weiß wird Gelb
Text entfernen
Setze den Text auf None, um ihn zu entfernen:
label.text = None
Auf dem Bildschirm oder in der Welt
Eine Text-Entity liegt in der Welt, wie ein Sprite: Die Kamera verschiebt sie und ihr Zoom skaliert sie. Für ein HUD, das auf dem Bildschirm bleibt (Punkte, Leben, eine Meldung), erzeugst du den Text als Kind der Kamera: Sein x und y werden dann von der Bildschirmmitte aus gemessen, und er bleibt stehen, wenn sich die Kamera bewegt.
cam = world.spawn(camera=Camera())
label = world.spawn(parent=cam, x=-150, y=-80, layer=200, text=Text("Score: 0"))
Beispiel
Das Beispiel speichert die Punkte in einer Komponente des Labels, nicht in einer Modulvariablen.
from pyxen import *
def start():
cam = world.spawn(camera=Camera())
label = world.spawn(
parent=cam, x=-150, y=-80, layer=200,
text=Text("Score: 0", color=(1, 1, 1, 1))
)
label.score = {"value": 0}
def update():
for label in world.all("score"):
label.score.value += 1
label.text.content = "Score: " + str(label.score.value)