การสัมผัสหลายนิ้ว (Multi-touch)¶
นอกเหนือจากระบบอัตโนมัติทั่วไปแล้ว เรายังมีอินเทอร์เฟซการสัมผัสหลายนิ้วขั้นสูง ซึ่งช่วยให้คุณสามารถดำเนินการที่ซับซ้อนด้วยนิ้วได้ มีฟังก์ชันต่างๆ เช่น การบันทึกเส้นทางการสัมผัสของฮาร์ดแวร์, การเล่นซ้ำ, การสร้าง และการบันทึก
ข้อควรสนใจ
เพื่อให้คุณเข้าใจวิธีการใช้งานได้เร็วที่สุด ขอแนะนำให้คุณเปิด 'แสดงการตอบสนองเมื่อแตะ' และ 'ตำแหน่งตัวชี้' ใน ตัวเลือกสำหรับนักพัฒนา - การป้อนข้อมูล (หากไม่ได้เปิดใช้งาน คุณอาจไม่เห็นการตอบสนองใดๆ) โค้ดตัวอย่างต่อไปนี้จะแสดงวิธีการวาดสัญลักษณ์ X ที่มุมซ้ายบนของหน้าจอ
touch = d.touch()
finger0 = touch.contact(0)
finger1 = touch.contact(1)
# --- 1. กดลงที่จุดเริ่มต้น ---
finger0.down(150, 320)
finger1.down(450, 320)
touch.wait(20)
# --- 2. เคลื่อนที่ตามเส้นทาง (10 จุดพิกัด) ---
finger0.move(180, 350)
finger1.move(420, 350)
touch.wait(20)
finger0.move(210, 380)
finger1.move(390, 380)
touch.wait(20)
finger0.move(240, 410)
finger1.move(360, 410)
touch.wait(20)
finger0.move(270, 440)
finger1.move(330, 440)
touch.wait(20)
finger0.move(300, 470) # จุดตัดกลาง
finger1.move(300, 470)
touch.wait(20)
finger0.move(330, 500)
finger1.move(270, 500)
touch.wait(20)
finger0.move(360, 530)
finger1.move(240, 530)
touch.wait(20)
finger0.move(390, 560)
finger1.move(210, 560)
touch.wait(20)
finger0.move(420, 590)
finger1.move(180, 590)
touch.wait(20)
finger0.move(450, 620) # จุดสิ้นสุด
finger1.move(150, 620)
touch.wait(20)
# --- 3. ยกนิ้วขึ้น ---
finger0.up()
finger1.up()
# ดำเนินการ
touch.perform()
การบันทึกเส้นทาง¶
เพื่อความสะดวกในการสร้างเส้นทาง เรามีฟังก์ชันการบันทึกให้ด้วย ซึ่งฟังก์ชันการบันทึกนี้ต้องการให้คุณใช้งานบนอุปกรณ์จริง
# รับเซสชัน multi-touch
touch = d.touch()
# บันทึกเส้นทาง หลังจากเรียกใช้ จะรอให้คุณใช้งานหน้าจออุปกรณ์จริงภายในเวลาที่กำหนด (120 วินาที) และจะคืนค่ากลับมาเมื่อคุณยกนิ้วขึ้น
touch.record()
# คุณสามารถบันทึกเส้นทางเป็นไฟล์ไบนารีได้
touch.save("/sdcard/touch/bin")
# คุณยังสามารถเล่นซ้ำเส้นทางได้โดยตรง
touch.perform()
การบันทึกเส้นทาง¶
เพื่อหลีกเลี่ยงการสร้างเส้นทางใหม่ด้วยโค้ดทุกครั้ง เรามีฟังก์ชันการบันทึกเส้นทาง ซึ่งช่วยให้คุณสามารถบันทึกข้อมูลเส้นทางลงในดิสก์ได้อย่างถาวร
# รับเซสชัน multi-touch
touch = d.touch()
# คุณสามารถบันทึกเส้นทางที่เพิ่งสร้างขึ้นเพื่อใช้โหลดในภายหลังได้
touch.save("/sdcard/track0.bin")
การโหลดเส้นทาง¶
คุณสามารถโหลดเส้นทางจากไฟล์ที่จัดเก็บไว้ในดิสก์เข้ามาในเซสชันได้โดยตรง
# รับเซสชัน multi-touch
touch = d.touch()
# โหลดเส้นทางจากไฟล์
touch.load("/sdcard/track0.bin")
การสร้างเส้นทาง¶
นอกจากการสร้างเส้นทางผ่านการบันทึกแล้ว คุณยังสามารถเลือกที่จะสร้างเส้นทางการสัมผัสด้วยโค้ดได้ด้วยตนเอง ด้านล่างนี้เราจะแนะนำวิธีการสร้างด้วยตนเองและฟังก์ชันอื่นๆ ที่มีให้ใช้งาน การดำเนินการสัมผัสที่ถูกต้องจะประกอบด้วย 3 เหตุการณ์ คือ การกดลง, การเคลื่อนที่ และการยกขึ้น ซึ่งสามารถตั้งค่าพารามิเตอร์แรงกดสำหรับเหตุการณ์ต่างๆ เช่น การกดลงและการเคลื่อนที่ได้
# รับเซสชัน multi-touch
touch = d.touch()
# รับอินพุตจากปลายนิ้วสองนิ้ว (หรือมากกว่า)
finger0 = touch.contact(0)
finger1 = touch.contact(1)
# นิ้วที่ 0 กดลงที่พิกัด 150 320
# พารามิเตอร์ z แทนแรงกดของนิ้ว ค่าที่ใช้ได้คือ 1-255 ค่าเริ่มต้นคือ 128
finger0.down(150, 320, z=128)
# นิ้วที่ 0 เคลื่อนที่จาก 150 320 ไปยัง 180 350
finger0.move(180, 350, z=128)
# รอ 20 มิลลิวินาที (เทียบเท่ากับ finger0.wait(20))
touch.wait(20)
# นิ้วที่ 0 ยกขึ้น
finger0.up()
# ล้างเส้นทางทั้งหมด
touch.reset()
# ดำเนินการ (wait คือการรอให้เสร็จสิ้นหรือไม่)
touch.perform(wait=True)