pygame ช่วยเหลือเกี่ยวกับการเพิ่มเลเยอร์

ฉันกำลังทำโปรเจ็กต์ใน pygame ฉันสร้างสรรค์เมนูอาหาร ในแต่ละกล่อง เมื่อฉันเลื่อนเมาส์ไปที่กล่อง ขอบจะเปลี่ยนเป็นสีน้ำเงินและข้อความ "คลิกเพิ่มเติม" จะปรากฏขึ้น

8 กล่อง

เมื่อฉันคลิก "คลิกเพิ่มเติม" ฉันต้องการให้เลเยอร์ใหม่ปรากฏที่ด้านบนของกล่อง และฉันต้องการให้กล่องทั้งหมดที่ด้านหลังไม่สามารถเข้าถึงได้เว้นแต่ฉันจะปิดเลเยอร์นั้น

เลเยอร์สีขาว

อย่างไรก็ตาม สิ่งที่ผมกำลังทำอยู่ตอนนี้ก็แค่วาดรูปสี่เหลี่ยมธรรมดาๆ เท่านี้กล่องด้านหลังทั้งหมดก็คลิกได้ตามปกติ แบบนี้

กล่องด้านหลังจะเปลี่ยนเป็นสีน้ำเงินหากฉันเลื่อนเมาส์ไปที่กล่องเหล่านั้น

ฉันได้อ่านมาบ้างเกี่ยวกับการเพิ่มเลเยอร์ใน pygame แล้ว แต่ไม่เข้าใจ ฉันทำงานกับ pygame เพียง 2 สัปดาห์เท่านั้น


person tad    schedule 06.11.2018    source แหล่งที่มา


คำตอบ (1)


มีหลายวิธีในการดำเนินการนี้

วิธีหนึ่งที่เป็นไปได้คือตั้งค่าตัวแปรแฟล็กบูลีนเป็น False ทุกครั้งที่มีการวาดเลเยอร์ และตรวจสอบค่าของตัวแปรแฟล็กทุกครั้งที่คลิกเมาส์ หากเป็นเท็จ อย่าปล่อยให้การคลิกผ่านไปยังตัวจัดการ

หากคุณกำลังใช้สิ่งนี้โดยใช้การเขียนโปรแกรมเชิงวัตถุ คุณสามารถสร้างออบเจ็กต์ "LayerManager" ที่ติดตามเลเยอร์ต่างๆ ตำแหน่ง และวิธีการซ้อนทับกัน (หากคุณวางแผนที่จะมีเลเยอร์จำนวนมากมาก ด้านบนของกันและกัน)

เท่าที่ฉันรู้ PyGame ไม่อนุญาตให้คุณใช้เลเยอร์ตามที่คุณต้องการ เนื่องจากเป็นคุณสมบัติเฉพาะที่คุณอาจต้องนำไปใช้เอง หากคุณโพสต์โค้ด เรายินดีที่จะช่วยเหลือคุณ!

person Community    schedule 07.11.2018