Runtime v2.81 · อัปเดต 30 ก.ย. 2569

ScreenCapture

ชุดควบคุมการจับภาพหน้าจอร่วมกันในการรันมาโครปัจจุบัน โดยปกติแคชอัตโนมัติจะใช้เฟรมซ้ำได้นานถึง 100 ms เพื่อลดงานจับภาพ หากต้องตรวจจับต่อเนื่องโดยใช้เฟรมล่าสุดที่มี ให้ใช้ auto_cache_off() ซึ่งเพิ่มภาระประมวลผลและการใช้แบตเตอรี่ ไม่รับประกันว่าจะทำงานเร็วขึ้นหรือได้พิกเซลที่เพิ่งวาดใหม่ ส่วน cache_on() จะปักหมุดเฟรมแยกต่างหากและมีลำดับความสำคัญเหนือการตั้งค่าแคชอัตโนมัติ

รูปแบบคำสั่ง

ScreenCapture

ไม่สามารถสร้างคลาสนี้โดยตรงได้

พารามิเตอร์

ไม่มี

ค่าที่ส่งกลับ

—

พฤติกรรม / ผลข้างเคียง

ชุดควบคุมการจับภาพหน้าจอร่วมกันในการรันมาโครปัจจุบัน โดยปกติแคชอัตโนมัติจะใช้เฟรมซ้ำได้นานถึง 100 ms เพื่อลดงานจับภาพ หากต้องตรวจจับต่อเนื่องโดยใช้เฟรมล่าสุดที่มี ให้ใช้ auto_cache_off() ซึ่งเพิ่มภาระประมวลผลและการใช้แบตเตอรี่ ไม่รับประกันว่าจะทำงานเร็วขึ้นหรือได้พิกเซลที่เพิ่งวาดใหม่ ส่วน cache_on() จะปักหมุดเฟรมแยกต่างหากและมีลำดับความสำคัญเหนือการตั้งค่าแคชอัตโนมัติ

การทำงาน

  • รอให้เสร็จ: ไม่
  • ความปลอดภัยเมื่อทำงานพร้อมกัน: ทำงานตามลำดับ
  • การทำงานแบบขนาน: ขึ้นอยู่กับเงื่อนไข

การควบคุมแคชอัปเดตนโยบายร่วมโดยไม่รอเฟรมหรือครบระยะเวลาที่ตั้ง การจับภาพถัดไปใช้นโยบายนี้ การเปลี่ยนมีผลทุกโฟลว์ใน Run และไม่ขอสิทธิ์จับภาพ

ตัวอย่าง

# ใช้เฟรมที่จับไว้หนึ่งเฟรมซ้ำสำหรับการตรวจหน้าจอหลายครั้ง
ScreenCapture.cache_on()
color = Color.get(Point(500, 900))
hit = Region.full_screen().find("enemy", timeout=0)
ScreenCapture.cache_off()

# ใช้เฟรมล่าสุดที่มีสำหรับการตรวจจับช่วงสั้น
ScreenCapture.auto_cache_off(duration_ms=1000)
hit = Region.full_screen().find("enemy", timeout=800, rate=30)

# ปิดโดยไม่ตั้งเวลา แล้วเรียกเปิดแคชอัตโนมัติอีกครั้ง
ScreenCapture.auto_cache_off()
hit = Region.full_screen().find("enemy", timeout=2000, rate=30)
ScreenCapture.auto_cache_on()

ข้อผิดพลาด / ข้อจำกัด

ไม่มีข้อจำกัดเพิ่มเติมที่ระบุไว้ ให้ปฏิบัติตามพารามิเตอร์และพฤติกรรมข้างต้น

API ที่เกี่ยวข้อง

เมธอด

4 เมธอด

ScreenCapture.cache_on

ปักหมุดเฟรมจับภาพหน้าจอจริงถัดไปและใช้ซ้ำจนกว่าจะเรียก ScreenCapture.cache_off() หากยังไม่มีบัฟเฟอร์ใหม่ในคิว ระบบจะปักหมุดเฟรมล่าสุดที่ใช้ได้จากตัวอ่านภาพปัจจุบันแทน โดยไม่ขอสิทธิ์จับภาพหน้าจอเพิ่มเติม

รูปแบบคำสั่ง

ScreenCapture.cache_on()

พารามิเตอร์

ไม่มี

ค่าที่ส่งกลับ

None — ไม่มีค่าส่งคืน

พฤติกรรม / ผลข้างเคียง

ปักหมุดเฟรมจับภาพหน้าจอจริงถัดไปและใช้ซ้ำจนกว่าจะเรียก ScreenCapture.cache_off() หากยังไม่มีบัฟเฟอร์ใหม่ในคิว ระบบจะปักหมุดเฟรมล่าสุดที่ใช้ได้จากตัวอ่านภาพปัจจุบันแทน โดยไม่ขอสิทธิ์จับภาพหน้าจอเพิ่มเติม

การทำงาน

  • รอให้เสร็จ: ไม่
  • ความปลอดภัยเมื่อทำงานพร้อมกัน: ทำงานตามลำดับ
  • การทำงานแบบขนาน: ขึ้นอยู่กับเงื่อนไข

การควบคุมแคชอัปเดตนโยบายร่วมโดยไม่รอเฟรมหรือครบระยะเวลาที่ตั้ง การจับภาพถัดไปใช้นโยบายนี้ การเปลี่ยนมีผลทุกโฟลว์ใน Run และไม่ขอสิทธิ์จับภาพ

ตัวอย่าง

# ตรึงเฟรมร่วมหนึ่งเฟรมสำหรับการตรวจจับสองรอบ
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)

ข้อผิดพลาด / ข้อจำกัด

ไม่มีข้อจำกัดเพิ่มเติมที่ระบุไว้ ให้ปฏิบัติตามพารามิเตอร์และพฤติกรรมข้างต้น

API ที่เกี่ยวข้อง

ScreenCapture.cache_off

เลิกปักหมุดเฟรมจับภาพหน้าจอโดยไม่เปลี่ยนการตั้งค่าแคชอัตโนมัติ หากเปิดแคชอัตโนมัติอยู่ ยังสามารถใช้เฟรมล่าสุดซ้ำได้ เมื่อต้องการเฟรมล่าสุดที่มีสำหรับการตรวจจับ ให้เรียก auto_cache_off() เพิ่มด้วย

รูปแบบคำสั่ง

ScreenCapture.cache_off()

พารามิเตอร์

ไม่มี

ค่าที่ส่งกลับ

None — ไม่มีค่าส่งคืน

พฤติกรรม / ผลข้างเคียง

เลิกปักหมุดเฟรมจับภาพหน้าจอโดยไม่เปลี่ยนการตั้งค่าแคชอัตโนมัติ หากเปิดแคชอัตโนมัติอยู่ ยังสามารถใช้เฟรมล่าสุดซ้ำได้ เมื่อต้องการเฟรมล่าสุดที่มีสำหรับการตรวจจับ ให้เรียก auto_cache_off() เพิ่มด้วย

การทำงาน

  • รอให้เสร็จ: ไม่
  • ความปลอดภัยเมื่อทำงานพร้อมกัน: ทำงานตามลำดับ
  • การทำงานแบบขนาน: ขึ้นอยู่กับเงื่อนไข

การควบคุมแคชอัปเดตนโยบายร่วมโดยไม่รอเฟรมหรือครบระยะเวลาที่ตั้ง การจับภาพถัดไปใช้นโยบายนี้ การเปลี่ยนมีผลทุกโฟลว์ใน Run และไม่ขอสิทธิ์จับภาพ

ตัวอย่าง

# ยกเลิกการตรึงเฟรมก่อนสแกนครั้งถัดไป
ScreenCapture.cache_off()
region = Region(100, 200, 300, 400)
print(region.find("start", 0).found)

ข้อผิดพลาด / ข้อจำกัด

ไม่มีข้อจำกัดเพิ่มเติมที่ระบุไว้ ให้ปฏิบัติตามพารามิเตอร์และพฤติกรรมข้างต้น

API ที่เกี่ยวข้อง

ScreenCapture.auto_cache_off

ปิดการใช้เฟรมซ้ำโดยตั้งใจจากแคชอัตโนมัติเป็นเวลา duration_ms มิลลิวินาทีนับจากการเรียกนี้ หากละไว้หรือระบุ None จะปิดจนกว่าจะเรียก auto_cache_on() หรือจบการรันมาโคร การเรียกซ้ำจะแทนที่ระยะเวลาเดิม มีผลต่อการจับภาพร่วมกันแบบ bitmap, เฟรมดิบ, TFLite และพิกเซล ข้ามการใช้เฟรมซ้ำตาม TTL แต่การรับเฟรมยังมีเวลาจำกัด และไม่สามารถบังคับให้ Android วาดพิกเซลใหม่ได้ ไม่เลิกปักหมุดจาก cache_on() ไม่ขอสิทธิ์จับภาพ และไม่รอจนหมดเวลาที่กำหนด

รูปแบบคำสั่ง

ScreenCapture.auto_cache_off(duration_ms=None)

พารามิเตอร์

ชื่อคำอธิบาย
duration_msNumber | None
จำนวนมิลลิวินาทีเป็นจำนวนเต็มบวก (ทั้ง 100 และ 100.0 ใช้ได้) หรือ None เพื่อไม่จำกัดเวลาภายในการรันมาโครนี้ ไม่รับค่า 0 ค่าลบ ค่าที่มีเศษส่วน สตริง บูลีน หรือค่าที่เกินขอบเขต
ไม่บังคับ · ระบุตามตำแหน่งหรือชื่อ
ค่าเริ่มต้น: None

ค่าที่ส่งกลับ

None — ไม่มีค่าส่งคืน

พฤติกรรม / ผลข้างเคียง

ปิดการใช้เฟรมซ้ำโดยตั้งใจจากแคชอัตโนมัติเป็นเวลา duration_ms มิลลิวินาทีนับจากการเรียกนี้ หากละไว้หรือระบุ None จะปิดจนกว่าจะเรียก auto_cache_on() หรือจบการรันมาโคร การเรียกซ้ำจะแทนที่ระยะเวลาเดิม มีผลต่อการจับภาพร่วมกันแบบ bitmap, เฟรมดิบ, TFLite และพิกเซล ข้ามการใช้เฟรมซ้ำตาม TTL แต่การรับเฟรมยังมีเวลาจำกัด และไม่สามารถบังคับให้ Android วาดพิกเซลใหม่ได้ ไม่เลิกปักหมุดจาก cache_on() ไม่ขอสิทธิ์จับภาพ และไม่รอจนหมดเวลาที่กำหนด

การทำงาน

  • รอให้เสร็จ: ไม่
  • ความปลอดภัยเมื่อทำงานพร้อมกัน: ทำงานตามลำดับ
  • การทำงานแบบขนาน: ขึ้นอยู่กับเงื่อนไข

การควบคุมแคชอัปเดตนโยบายร่วมโดยไม่รอเฟรมหรือครบระยะเวลาที่ตั้ง การจับภาพถัดไปใช้นโยบายนี้ การเปลี่ยนมีผลทุกโฟลว์ใน Run และไม่ขอสิทธิ์จับภาพ

ตัวอย่าง

# ข้ามแคชอัตโนมัติชั่วคราว การตรึงเฟรมเป็นอีกการตั้งค่าหนึ่ง
ScreenCapture.cache_off()
ScreenCapture.auto_cache_off(1000)
region = Region(100, 200, 300, 400)
print(region.find("start", 500).found)
ScreenCapture.auto_cache_on()

ข้อผิดพลาด / ข้อจำกัด

ไม่มีข้อจำกัดเพิ่มเติมที่ระบุไว้ ให้ปฏิบัติตามพารามิเตอร์และพฤติกรรมข้างต้น

API ที่เกี่ยวข้อง

ScreenCapture.auto_cache_on

เปิดแคชเฟรมอัตโนมัติตามปกติทันทีและยกเลิกการปิดทั้งแบบกำหนดเวลาและไม่จำกัดเวลา ไม่เลิกปักหมุดจาก cache_on() ไม่ขอสิทธิ์จับภาพ และไม่รอ แคชอัตโนมัติจะกลับมาเปิดเมื่อจบการรันมาโครด้วย

รูปแบบคำสั่ง

ScreenCapture.auto_cache_on()

พารามิเตอร์

ไม่มี

ค่าที่ส่งกลับ

None — ไม่มีค่าส่งคืน

พฤติกรรม / ผลข้างเคียง

เปิดแคชเฟรมอัตโนมัติตามปกติทันทีและยกเลิกการปิดทั้งแบบกำหนดเวลาและไม่จำกัดเวลา ไม่เลิกปักหมุดจาก cache_on() ไม่ขอสิทธิ์จับภาพ และไม่รอ แคชอัตโนมัติจะกลับมาเปิดเมื่อจบการรันมาโครด้วย

การทำงาน

  • รอให้เสร็จ: ไม่
  • ความปลอดภัยเมื่อทำงานพร้อมกัน: ทำงานตามลำดับ
  • การทำงานแบบขนาน: ขึ้นอยู่กับเงื่อนไข

การควบคุมแคชอัปเดตนโยบายร่วมโดยไม่รอเฟรมหรือครบระยะเวลาที่ตั้ง การจับภาพถัดไปใช้นโยบายนี้ การเปลี่ยนมีผลทุกโฟลว์ใน Run และไม่ขอสิทธิ์จับภาพ

ตัวอย่าง

# คืนค่าการใช้เฟรมซ้ำอัตโนมัติตามปกติ
ScreenCapture.auto_cache_on()
region = Region(100, 200, 300, 400)
print(region.find("start", 0).found)

ข้อผิดพลาด / ข้อจำกัด

ไม่มีข้อจำกัดเพิ่มเติมที่ระบุไว้ ให้ปฏิบัติตามพารามิเตอร์และพฤติกรรมข้างต้น

API ที่เกี่ยวข้อง