Capturer l'état de l'interface (LCC.capture_ui_state)
Déclaration
local state = LCC.capture_ui_state(options)
Conditions d'utilisation
LCC.capture_ui_state dépend du module ui_element et exige que ui_element._VERSION soit au moins 0.6.0. Si l'appareil ne peut pas charger le module, si celui-ci n'a pas de numéro de version valide, si sa version est inférieure à 0.6.0 ou s'il ne fournit pas la capacité de capture d'état de l'interface, l'appel demande directement de mettre XXTouch à jour avant d'utiliser capture_ui_state et ne crée aucun objet d'état partiel.
Paramètres
options.hit_test_spacing: entier positif facultatif, espacement des points de détection lors de l'échantillonnage de l'écran,40par défaut.options.force_hit_test: booléen facultatif, indique s'il faut forcer la détection lors de l'échantillonnage de l'écran,falsepar défaut.
Valeur de retour
Renvoie un objet représentant l'état de l'interface. Au moment de sa création, l'objet capture immédiatement une capture PNG actuelle et l'arbre brut des éléments textuels, puis génère une archive .xxtuie ; les opérations d'enregistrement et d'écriture du journal réutilisent ensuite ces octets mis en cache sans effectuer une nouvelle capture.
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éthodes de l'objet
state:status()
Chaque appel renvoie une nouvelle table d'état ; modifier la valeur renvoyée n'affecte pas l'état interne de l'objet. L'état peut encore être interrogé après la destruction de l'objet.
status:complete,screenshot,elementsouunavailable.captured_at/capturedAt: heure UTC à laquelle la capture a commencé.screenshot.status:capturedouunavailable, avecwidthetheight; en cas d'échec, contient égalementerror.elements.status:capturedouunavailable, aveccount; en cas d'échec, contient égalementerror.
state:save_to_file(path)
Écrit atomiquement l'archive mise en cache à l'emplacement indiqué et remplace le fichier existant. Renvoie true en cas de succès et nil, err en cas d'échec. Le chemin et l'extension sont utilisés exactement comme fournis par l'appelant ; .xxtuie est recommandé, faute de quoi le gestionnaire de fichiers pourrait ne pas reconnaître automatiquement le fichier. L'enregistrement n'est plus possible après la destruction de l'objet.
state:destroy()
Libère l'archive mise en cache. L'opération peut être appelée plusieurs fois ; après la destruction, status() reste disponible, mais l'enregistrement et l'écriture du journal échouent.
Échec partiel de la capture
Après les contrôles de version et de capacité, la capture d'écran et l'arbre des éléments textuels sont obtenus indépendamment. Si l'une des captures échoue à l'exécution, l'appel renvoie toujours une archive valide contenant exactement manifest.json, screenshot.png et elements.json : la capture échouée utilise un PNG transparent de 1×1, l'arbre échoué utilise un tableau d'éléments vide et le résumé de l'erreur est écrit dans le Manifest. Si la dépendance n'est pas satisfaite, si les paramètres sont invalides, si l'archive ne peut pas être générée ou si elle dépasse 20 MiB, LCC.capture_ui_state() lève une erreur.
Le PNG original de la capture est limité à 16 MiB, à 16384 pixels par côté et à 12 millions de pixels au total ; le JSON des éléments est limité à 4 MiB et à 5000 nœuds, avec un index de profondeur maximal de 32. Le dépassement d'une limite individuelle marque l'élément concerné comme unavailable.