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ão40.options.force_hit_test: booleano opcional; define se o acerto da amostragem da tela deve ser forçado, padrãofalse.
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,elementsouunavailable.captured_at/capturedAt: horário UTC em que a captura começou.screenshot.status:capturedouunavailable, comwidtheheight; em caso de falha, também contémerror.elements.status:capturedouunavailable, comcount; em caso de falha, também contémerror.
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.