ScreenCapture

Bộ điều khiển tĩnh cho chụp màn hình dùng chung trong lần chạy macro hiện tại. Cache tự động thường dùng lại frame trong tối đa 100 ms để giảm công việc chụp. Khi cần nhận diện liên tục với frame mới nhất hiện có, dùng auto_cache_off(); việc này tăng xử lý và hao pin, không bảo đảm chạy nhanh hơn hoặc có pixel vừa được vẽ mới. cache_on() ghim riêng một frame và được ưu tiên hơn thiết lập cache tự động.

Cú pháp

ScreenCapture

Không thể khởi tạo trực tiếp lớp này.

Giá trị trả về

—

Ví dụ

# Dùng lại một khung hình đã chụp cho nhiều lần kiểm tra màn hình
ScreenCapture.cache_on()
color = Color.get(Point(500, 900))
hit = Region.full_screen().find("enemy", timeout=0)
ScreenCapture.cache_off()

# Ưu tiên frame mới nhất hiện có cho một đợt nhận diện ngắn
ScreenCapture.auto_cache_off(duration_ms=1000)
hit = Region.full_screen().find("enemy", timeout=800, rate=30)

# Tắt không hẹn giờ, sau đó chủ động bật lại cache tự động
ScreenCapture.auto_cache_off()
hit = Region.full_screen().find("enemy", timeout=2000, rate=30)
ScreenCapture.auto_cache_on()

Phương thức

4 phương thức

ScreenCapture.cache_on

Pin frame chụp màn hình thật tiếp theo và dùng lại frame đó cho đến khi gọi ScreenCapture.cache_off(). Nếu chưa có buffer mới trong hàng đợi, frame hợp lệ gần nhất của capture reader hiện tại sẽ được pin thay thế. Hàm này không xin quyền chụp màn hình.

Cú pháp

ScreenCapture.cache_on()

Giá trị trả về

None — Không có giá trị trả về.

Ví dụ

# Ghim một khung hình dùng chung cho hai lượt nhận diện
ScreenCapture.cache_on()
region = Region(100, 200, 300, 400)
first = region.find("start", 0)
second = region.find("confirm", 0)
ScreenCapture.cache_off()
print(first.found, second.found)

ScreenCapture.cache_off

Bỏ ghim frame chụp màn hình mà không thay đổi thiết lập cache tự động. Frame còn mới vẫn có thể được dùng lại nếu cache tự động đang bật. Gọi thêm auto_cache_off() khi nhận diện cần frame mới nhất hiện có.

Cú pháp

ScreenCapture.cache_off()

Giá trị trả về

None — Không có giá trị trả về.

Ví dụ

# Bỏ ghim thủ công trước lần quét tiếp theo
ScreenCapture.cache_off()
region = Region(100, 200, 300, 400)
print(region.find("start", 0).found)

ScreenCapture.auto_cache_off

Tắt việc chủ động dùng lại frame từ cache tự động trong duration_ms mili giây tính từ lệnh gọi này; nếu bỏ qua hoặc truyền None thì tắt đến khi gọi auto_cache_on() hoặc kết thúc lần chạy macro. Gọi lại sẽ thay thế thời hạn trước đó. Áp dụng cho chụp bitmap, frame thô, TFLite và pixel dùng chung; bỏ qua việc dùng lại frame theo TTL nhưng thời gian lấy frame vẫn có giới hạn và không thể buộc Android vẽ pixel mới. Không bỏ ghim cache_on(), không xin quyền chụp và không chờ hết khoảng thời gian đã đặt.

Cú pháp

ScreenCapture.auto_cache_off(duration_ms=None)

Tham số

TênMô tả
duration_msNumber | None
Số mili giây nguyên dương (100 và 100.0 đều hợp lệ), hoặc None để không giới hạn thời gian trong lần chạy macro này. Không chấp nhận số 0, số âm, số có phần lẻ, chuỗi, boolean hoặc giá trị vượt giới hạn.
Tùy chọn · Theo vị trí hoặc tên
Mặc định: None

Giá trị trả về

None — Không có giá trị trả về.

Ví dụ

# Tạm bỏ qua cache tự động; ghim thủ công là thiết lập riêng
ScreenCapture.cache_off()
ScreenCapture.auto_cache_off(1000)
region = Region(100, 200, 300, 400)
print(region.find("start", 500).found)
ScreenCapture.auto_cache_on()

ScreenCapture.auto_cache_on

Bật lại cache frame tự động bình thường ngay lập tức và hủy thời hạn tắt, kể cả khi đã tắt không giới hạn. Không bỏ ghim cache_on(), không xin quyền chụp và không chờ. Cache tự động cũng được khôi phục khi lần chạy macro kết thúc.

Cú pháp

ScreenCapture.auto_cache_on()

Giá trị trả về

None — Không có giá trị trả về.

Ví dụ

# Khôi phục việc tự động dùng lại khung hình như bình thường
ScreenCapture.auto_cache_on()
region = Region(100, 200, 300, 400)
print(region.find("start", 0).found)