Chuyển tới nội dung chính

Chụp trạng thái giao diện (LCC.capture_ui_state)

Khai báo​

local state = LCC.capture_ui_state(options)

Yêu cầu sử dụng​

LCC.capture_ui_state phụ thuộc vào mô-đun ui_element và yêu cầu ui_element._VERSION từ 0.6.0 trở lên. Nếu thiết bị không tải được mô-đun, mô-đun không có số phiên bản hợp lệ, phiên bản thấp hơn 0.6.0 hoặc thiếu khả năng chụp trạng thái giao diện, lệnh gọi sẽ yêu cầu cập nhật XXTouch rồi mới sử dụng capture_ui_state và không tạo đối tượng trạng thái một phần.

Tham số​

  • options.hit_test_spacing: Số nguyên dương tùy chọn, khoảng cách lấy mẫu kiểm tra điểm chạm trên màn hình, mặc định là 40.
  • options.force_hit_test: Giá trị boolean tùy chọn, cho biết có bắt buộc thực hiện lấy mẫu kiểm tra điểm chạm trên màn hình hay không, mặc định là false.

Giá trị trả về​

Trả về một đối tượng trạng thái giao diện. Khi đối tượng được tạo, hàm lập tức chụp ảnh màn hình PNG hiện tại và cây phần tử văn bản gốc, rồi tạo một tệp lưu trữ .xxtuie. Các lần lưu tệp và ghi nhật ký sau đó đều dùng lại dữ liệu byte đã lưu trong bộ nhớ đệm này, không chụp lại.

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 .. "/hiện-trường.xxtuie")
if not ok then
error(err)
end

LCC.log(1, "Hiện trường", state)
state:destroy()

Phương thức của đối tượng​

state:status()​

Mỗi lần gọi đều trả về một bảng trạng thái mới; việc sửa bảng trả về không ảnh hưởng đến trạng thái bên trong đối tượng. Vẫn có thể truy vấn trạng thái sau khi đối tượng bị hủy.

  • status: complete, screenshot, elements hoặc unavailable.
  • captured_at / capturedAt: Thời gian UTC khi bắt đầu chụp.
  • screenshot.status: captured hoặc unavailable, kèm theo width, height; khi thất bại còn có error.
  • elements.status: captured hoặc unavailable, kèm theo count; khi thất bại còn có error.

state:save_to_file(path)​

Ghi tệp lưu trữ đã lưu trong bộ nhớ đệm vào đường dẫn chỉ định theo cách nguyên tử và ghi đè tệp hiện có. Trả về true khi thành công hoặc nil, err khi thất bại. Đường dẫn và phần mở rộng được dùng đúng như giá trị bên gọi truyền vào; nên dùng .xxtuie, nếu không trình quản lý tệp có thể không tự động nhận diện được. Không thể lưu lại sau khi đối tượng bị hủy.

state:destroy()​

Giải phóng tệp lưu trữ trong bộ nhớ đệm. Có thể gọi thao tác này nhiều lần; sau khi hủy, status() vẫn dùng được nhưng việc lưu tệp và ghi nhật ký sẽ thất bại.

Chụp không đầy đủ​

Sau khi vượt qua bước kiểm tra phiên bản và khả năng, ảnh chụp màn hình và cây phần tử văn bản được chụp độc lập. Nếu một trong hai thao tác chụp thất bại trong lúc chạy, hàm vẫn trả về một tệp lưu trữ hợp lệ luôn chứa manifest.json, screenshot.png và elements.json: ảnh chụp thất bại được thay bằng PNG trong suốt 1×1, cây phần tử thất bại được thay bằng mảng phần tử rỗng và tóm tắt lỗi được ghi vào Manifest. Nếu không đáp ứng phần phụ thuộc, tham số không hợp lệ, không thể tạo chính tệp lưu trữ hoặc tệp vượt quá 20 MiB, LCC.capture_ui_state() sẽ phát sinh lỗi.

PNG gốc của ảnh chụp có kích thước tối đa 16 MiB, mỗi chiều tối đa 16384 pixel và tổng số pixel tối đa 12 triệu; JSON phần tử có kích thước tối đa 4 MiB, tối đa 5000 nút và chỉ số độ sâu tối đa là 32. Nếu một mục vượt quá giới hạn riêng, mục đó được đánh dấu là unavailable.