MatchResult:getRegion()
Trả về vùng so khớp dưới dạng một đối tượng Region.
Mô tả
Phương thức getRegion() trả về một đối tượng Region biểu diễn vùng hình chữ nhật nơi tìm thấy kết quả so khớp. Vùng này bao gồm vị trí (X, Y) của góc trên bên trái và kích thước (rộng, cao) của vùng so khớp.
Region trả về có thể được dùng để:
- Thực hiện các lần tìm kiếm tiếp theo bên trong vùng so khớp
- Chụp ảnh màn hình chỉ riêng vùng so khớp
- Xác định một vùng con cho các thao tác khác
- Xây dựng một vùng tìm kiếm vừa vặn để so khớp lặp lại nhanh hơn
Khai báo
getRegion(): Region
Trả về
Region - Một đối tượng Region biểu diễn ranh giới hình chữ nhật của vùng so khớp.
Ví dụ
local result = Screen:find("container.png")
if result then
local region = result:getRegion()
toast("Vùng: X=" .. region:getX() .. ", Y=" .. region:getY())
toast("Kích thước: " .. region:getWidth() .. "x" .. region:getHeight())
-- Tìm kiếm bên trong vùng so khớp để so khớp nhanh hơn
local innerResult = region:find("container.png")
if innerResult then
toast("Đã tìm thấy container.png bên trong vùng!")
end
end
Kỹ thuật Fit Region
getRegion() là phương thức chính đằng sau một mẫu tối ưu hóa quan trọng thường được gọi là fit region.
Mẫu này như sau:
- Tìm một đối tượng ổn định trên
Screen - Gọi
getRegion()trênMatchResult - Tái sử dụng vùng đó cho các lần tìm kiếm lặp đi lặp lại bên trong cùng một đối tượng
local panel = Screen:find("reward-panel.jpg")
if panel then
local fitRegion = panel:getRegion()
-- Chỉ tìm kiếm bên trong panel vừa vặn thay vì toàn màn hình
local claim = fitRegion:find("claim-button.jpg")
if claim then
fitRegion:click("claim-button.jpg")
end
end
Kỹ thuật này hoạt động tốt nhất khi đối tượng so khớp luôn có kích thước gần như nhau. Nó có thể giảm đáng kể chi phí xử lý vì bạn tránh được việc lặp lại tìm kiếm toàn màn hình cho mỗi bước bên trong cùng một container.