Flex Event Propagation
Jan 25
ปล่อยเรื่องนี้ค้างคาใจมานานเหลือเกิน เพราะไม่ได้ใช้ Event ครบทุก Phase อย่างจริงจัง วันนี้ต้องทำให้ Checkbox List ทำงานเร็วขึ้นแต่ไม่อยากแก้ List ของ Adobe ตรงๆ หรือทำไรเพิ่มเติมก็ต้องเล่นกับ Event แทนนี่แหละ อ่านคร่าวๆ ขั้นตอนการส่งต่อ Event ของ Flex มีแค่สามขั้นคือ Capturing Phase, Targeting Phase, Bubbling Phase ลองดูภาพด้านล่างเผื่อเข้าใจง่ายขึ้น

ภาพด้านบนแสดงการซ้อนกันของ Component ต่างๆ ที่สร้างขึ้น มี Application เป็น Component ที่อยู่นอกสุด ตามด้วย HBox และ Button ถ้าเขียนเป็น mxml ก็จะได้อย่างด้านล่าง
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Box> <mx:Button /> </mx:Box> </mx:Application>
เมื่อมีคนกดปุ่มสิ่งที่เกิดขึ้นคือ component ที่อยู่นอกสุดซึ่งก็คือ Application จะดักจับ event ได้ก่อน จากนั้นจะส่งต่อไปที่ Box และ Box จะส่งต่อให้ Button อีกที การส่งต่อ Event ในช่วงนี้เรียกว่า Capturing Phase เมื่อถึง Button ซึ่งเป็นปุ่มที่เรากดแล้ว ช่วงที่อยู่ตรงปุ่มเรียกว่า Targeting Phase จากนั้น Button จะส่ง Event กลับไปยัง Box และ Box ส่งต่อให้ Application อีกที เรียกว่า Bubbling Phase
เอาหละ มาดูผลลัพธ์กันดีกว่าว่าใช้พวกนี้ช่วยแล้วเป็นยังไง หรือจะ ดาวโหลด ไปดูเต็มๆ ก็ได้
ของแถม อันนี้ทำเพื่อทดสอบว่า Event มันส่งต่อยังไงบ้าง
เกี่ยวข้อง:
Twitter
Facebook
Google
Feed
Feb 17, 2010 @ 14:57:46
mindmp น่าจะแก้ได้