Saltar al contenido principal

Capturar el estado de la interfaz (LCC.capture_ui_state)

Declaración​

local state = LCC.capture_ui_state(options)

Requisitos de uso​

LCC.capture_ui_state depende del módulo ui_element, cuyo ui_element._VERSION debe ser al menos 0.6.0. Si el dispositivo no puede cargar el módulo, este no tiene un número de versión válido, la versión es inferior a 0.6.0 o falta la capacidad de capturar el estado de la interfaz, la llamada indica directamente que debes actualizar XXTouch antes de usar capture_ui_state y no crea objetos de estado parciales.

Parámetros​

  • options.hit_test_spacing: entero positivo opcional; intervalo de impacto para el muestreo de la pantalla, con valor predeterminado 40.
  • options.force_hit_test: booleano opcional; indica si se debe forzar el impacto del muestreo de la pantalla, con valor predeterminado false.

Valores devueltos​

Devuelve un objeto de estado de la interfaz. Al crearlo, captura inmediatamente la imagen PNG actual y el árbol de elementos de texto sin procesar, y genera un archivo .xxtuie; las operaciones posteriores de guardado y registro reutilizan los bytes almacenados en caché y no vuelven a capturar la pantalla.

local state = LCC.capture_ui_state({
hit_test_spacing = 40,
force_hit_test = false,
})

local info = state:status()
local ok, err = state:save_to_file(XXT_SCRIPTS_PATH .. "/现场.xxtuie")
if not ok then
error(err)
end

LCC.log(1, "现场", state)
state:destroy()

Métodos del objeto​

state:status()​

Cada llamada devuelve una tabla de estado nueva; modificar el valor devuelto no afecta al estado interno del objeto. Se puede consultar incluso después de destruir el objeto.

  • status: complete, screenshot, elements o unavailable.
  • captured_at / capturedAt: hora UTC en la que comenzó la captura.
  • screenshot.status: captured o unavailable; incluye width y height, y en caso de fallo también error.
  • elements.status: captured o unavailable; incluye count, y en caso de fallo también error.

state:save_to_file(path)​

Escribe atómicamente el archivo comprimido en la ruta indicada y sobrescribe cualquier archivo existente. Devuelve true si tiene éxito y nil, err si falla. La ruta y la extensión se usan exactamente como las proporciona el llamador; se recomienda .xxtuie, de lo contrario el Gestor de archivos podría no reconocerlo automáticamente. No se puede guardar después de destruir el objeto.

state:destroy()​

Libera el archivo comprimido en caché. La operación se puede repetir; después de destruir el objeto, status() sigue disponible, pero guardar y escribir en el registro fallarán.

Fallo parcial de la captura​

Tras comprobar la versión y las capacidades, la captura de pantalla y el árbol de elementos de texto se realizan de forma independiente. Si falla cualquiera de las capturas en tiempo de ejecución, se devuelve igualmente un archivo comprimido válido que contiene siempre manifest.json, screenshot.png y elements.json: la captura fallida usa un PNG transparente de 1×1 y el árbol de elementos fallido usa un array vacío; el resumen del error se escribe en el Manifest. Si no se cumplen las dependencias, los parámetros son inválidos, no se puede generar el archivo comprimido o supera 20 MiB, LCC.capture_ui_state() lanza un error.

El PNG original de la captura está limitado a 16 MiB, 16384 píxeles por lado y un total máximo de 12 millones de píxeles; el JSON de elementos está limitado a 4 MiB, 5000 nodos y una profundidad máxima de índice de 32. Si se supera el límite de un elemento, este se marca como unavailable.