Ir al contenido

Movimiento reducido, tests y límites

A algunas personas el movimiento las marea o las distrae, y activan “reducir movimiento” en su sistema. Pyzed sigue ese ajuste, que lee al arrancar la app: entonces cada animación muestra su estado de reposo al momento, sin moverse.

  • pz.set_reduced_motion(True) quita el movimiento, False lo activa y None vuelve a seguir al sistema. Ofrécelo como un ajuste de tu app.
  • La variable de entorno PYZED_REDUCED_MOTION (1 o 0) manda sobre ambos.

Mira Accesibilidad.

Las capturas (App.screenshot, pz.screenshot) siempre muestran el estado de reposo: en lo que termina una animación de mount. Así los tests y las imágenes de la documentación son estables, sea cual sea el tiempo.

Para comprobar que un widget se anima, mira el árbol de widgets: repr(widget) termina en .animate(2 animation(s), 1 transition(s)).

Para probar una línea de tiempo, controla el reproductor a mano. advance ejecuta las llamadas y actualiza las pistas de atributo; seek salta sin ejecutar llamadas:

def test_intro_suena():
app = Juego()
app.player.owner = app # una app en marcha lo fija; un test lo fija a mano
app.player.pause()
app.player.advance(1.7) # pasa la llamada campana() en 1.6 s
assert app.mensaje == "¡Nuevo récord!"
app.player.seek(0.5)
assert app.player.value("card:y") < 40

Un reproductor en pausa muestra su clip en el cabezal, incluso en una captura, así que puedes sacar una foto de cualquier momento de un clip: app.player.pause(); app.player.seek(0.8); app.screenshot("intro.png").

  • Las transformaciones son traslación, escala uniforme y rotación; no hay inclinación (skew).
  • Un widget girado o desenfocado recibe los clics donde está su caja en el layout, no donde se dibuja.
  • Un widget con rotación, desenfoque, desenfoque de fondo o bloom se dibuja encima de sus vecinos, así que su bloom puede iluminar a los widgets de al lado.
  • backdrop_blur desenfoca lo que la ventana dibujó antes del widget, dentro de la misma capa padre (los contenedores con scroll y otros widgets que recortan empiezan una capa nueva).
  • width, height, padding y font_size vuelven a calcular el layout en cada fotograma mientras se mueven, así que en vistas grandes prefiere x, y y scale.
  • Las animaciones vuelven a empezar cuando un widget sale del árbol y regresa. Dale un key estable, o usa presence, para decidir cuándo se repiten.
  • Un reproductor reproduce un clip cada vez. Para dos escenas a la vez, usa dos reproductores.