pyxen.Text
Renderiza una cadena de texto en una Entity usando una fuente de mapa de bits.
Las entidades de texto usan un atlas de fuente para el renderizado — cada carácter se dibuja como un quad desde la textura del atlas.
Constructor
Text(
content,
*,
font="_default",
color=None,
align="left"
)
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
content | str | La cadena de texto a mostrar |
font | str | Nombre del recurso de fuente (por defecto: fuente integrada) |
color | (r, g, b, a) | Color de tinte (por defecto: blanco) |
align | str | Alineación del texto: "left", "center" o "right" |
content (Requerido)
La cadena de texto a renderizar.
Text("Hello World")
font (Opcional)
Nombre del recurso de fuente a usar. Si se omite, se usa la fuente integrada por defecto.
Text("Score: 0", font="myfont")
Un recurso de fuente consiste en un descriptor .font.json y una imagen de atlas .font.png.
color (Opcional)
Tiñe el texto renderizado.
Text("Warning!", color=(1, 0, 0, 1))
Por defecto: (1.0, 1.0, 1.0, 1.0) (blanco, completamente opaco).
align (Opcional)
Controla la alineación horizontal del texto relativa a la posición de la entidad.
Text("Centered", align="center")
| Valor | Descripción |
|---|---|
"left" | El texto comienza en la posición de la entidad (por defecto) |
"center" | El texto se centra en la posición de la entidad |
"right" | El texto termina en la posición de la entidad |
Asignar Text
Puedes asignarlo durante el spawn:
label = world.spawn(
text=Text("Score: 0"),
x=10, y=10, layer=200
)
O después:
label.text = Text("Game Over", color=(1, 0, 0, 1))
Actualizar Text en tiempo de ejecución
Accede al componente de texto a través de la entidad para actualizar propiedades:
label.text.content = "Score: 100"
label.text.color = (1, 1, 0, 1)
label.text.align = "center"
Desvanecer y teñir
El alpha, r, g y b de una entidad de texto se animan como los de un sprite (consulta entity.tween()): una puntuación que salta se desvanece sin cambiar text.color en cada frame:
label.tween("alpha", to=0, duration=0.4, delay=0.3) # la puntuación se desvanece, tras un momento
label.tween("b", to=0, duration=0.2) # el blanco se vuelve amarillo
Eliminar Text
Asigna None al texto para eliminarlo:
label.text = None
En la pantalla o en el mundo
Una entidad de texto está en el mundo, como un sprite: la cámara la mueve y su zoom la escala. Para un HUD que se queda en la pantalla (una puntuación, las vidas, un mensaje), crea el texto como hijo de la cámara: su x y su y se miden entonces desde el centro de la pantalla, y no se mueve cuando la cámara se mueve.
cam = world.spawn(camera=Camera())
label = world.spawn(parent=cam, x=-150, y=-80, layer=200, text=Text("Score: 0"))
Ejemplo
El ejemplo guarda la puntuación en un componente de la etiqueta, no en una variable del módulo.
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)