Ir para o conteúdo principal

Capturar o estado da interface (LCC.capture_ui_state)

Declaração​

local state = LCC.capture_ui_state(options)

Requisitos de uso​

LCC.capture_ui_state depende do módulo ui_element, e ui_element._VERSION precisa ser no mínimo 0.6.0. Se o dispositivo não conseguir carregar o módulo, ele não tiver um número de versão válido, a versão for inferior a 0.6.0 ou faltar o recurso de captura do estado da interface, a chamada solicitará diretamente a atualização do XXTouch antes de usar capture_ui_state e não criará um objeto de estado parcial.

Parâmetros​

  • options.hit_test_spacing: inteiro positivo opcional; espaçamento de acerto da amostragem da tela, padrão 40.
  • options.force_hit_test: booleano opcional; define se o acerto da amostragem da tela deve ser forçado, padrão false.

Valor de retorno​

Retorna um objeto de estado da interface. Na criação, captura imediatamente a screenshot PNG atual e a árvore de elementos de texto original e gera um arquivo .xxtuie; salvar e gravar logs depois reutiliza esses bytes em cache, sem nova captura.

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 do objeto​

state:status()​

Cada chamada retorna uma nova table de estado; alterar o valor retornado não afeta o estado interno do objeto. A consulta continua disponível depois que o objeto é destruído.

  • status: complete, screenshot, elements ou unavailable.
  • captured_at / capturedAt: horário UTC em que a captura começou.
  • screenshot.status: captured ou unavailable, com width e height; em caso de falha, também contém error.
  • elements.status: captured ou unavailable, com count; em caso de falha, também contém error.

state:save_to_file(path)​

Grava atomicamente o arquivo em cache no caminho especificado e substitui um arquivo existente. Retorna true em caso de sucesso e nil, err em caso de falha. O caminho e a extensão são usados exatamente como informados pelo chamador; recomendamos usar .xxtuie, caso contrário o gerenciador de arquivos talvez não o reconheça automaticamente. Não é possível salvar depois que o objeto é destruído.

state:destroy()​

Libera o arquivo em cache. A operação pode ser chamada repetidamente; depois da destruição, status() continua disponível, mas salvar e gravar logs falharão.

Falha parcial de captura​

Depois das verificações de versão e capacidade, a screenshot e a árvore de elementos de texto são capturadas de forma independente. Se qualquer captura falhar em tempo de execução, ainda será retornado um arquivo válido que contém sempre manifest.json, screenshot.png e elements.json: uma captura com falha usa um PNG transparente de 1×1, uma árvore de elementos com falha usa um array vazio e o resumo do erro é gravado no Manifest. Se uma dependência não for atendida, os parâmetros forem inválidos, o arquivo não puder ser gerado ou exceder 20 MiB, LCC.capture_ui_state() lançará um erro.

O PNG original da screenshot pode ter no máximo 16 MiB, cada lado pode ter no máximo 16384 pixels e o total pode ter no máximo 12 milhões de pixels; o JSON de elementos pode ter no máximo 4 MiB, até 5000 nós e índice de profundidade máximo de 32. Exceder um limite individual marca o item como unavailable.