การแสดงเมนูย่อยด้วยการคลิ๊กเมาส์
2010-06-27 Games 2,488ตัวอย่างโปรแกรมดังนี้
ผลที่ได้จากโปรแกรมนี้คือ เมื่อ Sprite ของ MouseCol มาชนกับ B_status และหากมีการ Click เมาส์ซ้าย โปรแกรมก็จะทำการวาง sprite i_status ที่พิกัด 41,187
และสิ่งที่พบก็คือ
1. เมื่อเลิกคลิ๊กเมาส์หรือเลื่อนเมาส์จน MouseCol ไม่ชนกับ B_status โปรแกรมก็จะไม่วางภาพ i_status ให้กับเรา เนื่องจากไม่ตรงกับเงื่อนไขที่วางไว้
2. เมื่อคลิ๊กเมาส์ค้างไว้แล้วเลื่อนเมาส์ จน MouseCol ชนกับ B_status โปรแกรมจะวางภาพ i_status ให้เลย และถ้าเลื่อนเมาส์ไปชนกับปุ่มอื่น มันก็จะทำงานต่อเนื่องกัน ซึ่งหลายๆกรณีเราต้องการให้มันทำงานค้างไว้หรือทำงานเพียงครั้งเดียว
ตัวอย่างการใช้ตัวแปรมาช่วยในการส่งค่าสำหรับการเรียกเมนูย่อยและเช็คการคลิ๊กของ Mouse
ในส่วนของ Main Loop เราใส่ ตัวเช็คการคลิ๊กของเมาส์ if MouseClick( )=0 ความหมายคือ เมื่อ mouse ไม่ได้ถูกคลิ๊กให้ส่งค่า ChkClick=0
จากนั้นในส่วนของ MainInterface ตรงการคลิ๊กเพิ่ม and ChkClick=0 เข้าไป และเมื่อคลิ๊กแล้วให้ส่งค่า ChkClick=1 จะทำให้โปรแกรมทำงานเพียงแค่ครั้งเดียวจนกว่าเราจะปล่อยเมาส์ค่า ChkClick ก็จะกลับมาเป็น 0
จากนั้นกำหนดตัวแปร ShowStatus ใช้ในการช่วยส่งค่าไปสู่การเรียกภาพ i_status ซึ่งค่าเริ่มต้นจะเป็น 0 และเมื่อทำการคลิ๊กเมาส์ค่า ShowStatus จะกลายเป็น 1 โดยที่โปรแกรมจะคำนวนค่าทางด้านขวาของสมการดังนี้
ShowStatus (ใหม่) = ShowStatus ( ปัจจุบัน ) + 1
สร้าง Procedure ใหม่ขึ้นมา และอย่าลืมว่า Procedure ใหม่นี้ ต้องถูกเรียกใช้จากใน Main Loop ด้วย โดยการไปเพิ่ม Gosub Menu_Status นั้นเอง
ส่วนใน Procedure Menu_Status จะเห็นได้ว่าเรานำค่า ShowStatus มาใช้คือเมื่อ ShowStatus = 1 ก็จะทำการวางภาพ i_status และ P_heroS
ส่วน if อันแรกเป็นการทำให้ ShowStatus คืนค่ากลับเป็น 0 เมื่อค่า ShowStatus > 1 ดังนั้นเมื่อเราคลิ๊กที่ปุ่ม status ซ้ำอีกครั้งค่า ShowStatus ก็จะกลายเป็น 0 นั่นเอง และภาพทั้ง 2 ก็จะหายไป
| Darkbasic Tutorials