ไม่ได้เขียนถึง Actionscript นานจริงๆ ช่วงหลังเขียนมันเยอะมากจนกลับบ้าน ไม่อยากเขียนถึงอีกเลยทิ้งช่วงยาว เมื่อวานบ่นๆ ไปใน twitter จน @iporsut เตือนบอกว่าไม่ได้เขียนนานและ เลยเขียนต่อดีกว่า ช่วงหลังเริ่มเจอปัญหาแปลกๆ แต่วันนี้เอา Component ที่ทำแบบเร่งรีบมาให้ดูซะหน่อย
หลังจากกลับมาเขียน Component นี้ทำให้รู้อะไรเพิ่มสองสามอย่าง
- Custom component ถ้าอยากให้ใส่ child component แบบ mxml เวลาเอาใช้ได้ต้องเขียนด้วย Actionscript เท่านั้น คนอื่นอาจเจอมาก่อนนานแล้ว แต่ผมพึ่งเคยเจออ่ะ -_-! เพราะแต่ก่อนจะเขียน Actionscript อย่างเดียวแต่ช่วงหลังจะใช้ mxml ขึ้นโครงก่อนว่า Component นี้จะมีอะไรบ้าง แล้วเขียน Actionscript source แยกไปอีกไฟล์ ก็เลยเกิดปัญหานี้ขึ้น
- เขียน State ด้วย Actionscript อย่างเดียว อันนี้ไว้เขียนแยกละกัน …
- การหา Component position ที่คลิก แต่ก่อนเวลากดปุ่มอะไรแล้วอยากเกิดเมนู popup ขึ้นก็จะแสดงจากที่เรากดนั่นแหละ แต่ปลายปีที่แล้วได้งานใหม่เข้ามาแบบเร่งด่วน กะว่าทำสบายๆ ที่ไหนได้ ล่อไปหนึ่งอาทิตย์กว่าจะเสร็จ -..- Component ที่ว่าก็คือที่แสดงอยู่ด้านบนนั่นแหละ
Component ด้านบนนี่พี่อยากได้เพราะไปดู Flex showcase มาไม่เชื่อลองกดปุ่ม Categories ดูหน้าตาจะได้ออกมาคล้ายๆ กัน แต่ว่าอันนี้จะออกมาเป็นปุ่มให้กดเลย จะบอกว่าสมบูรณ์ก็ยังไม่ค่อยสมบูรณ์เท่าไหร่ เพราะหน้าตาของปุ่มยังไม่ใช่แบบที่ต้องการ แบบที่ต้องการจะประมาณว่า จับ Toggle bar มาอยู่แนวตั้ง แล้วมีป้ายอยู่ข้างๆ ไอ้ Toggle bar แนวตั้งนี่ไม่ยากตั้งค่า style ตัวเดียวก็เสร็จแล้วแต่ไอ้ label ข้างๆนี่แหละที่คิดไม่ออกจริงๆ สุดท้ายเลยต้องทำเป็น button แยกต่างหากเอง -_-! (มาคิดออกตอนที่เขียนนี่แหละ แต่ไว้แก้คราวหน้าละกัน) แต่เวลาที่ใช้จริงๆ นานพอสมควรคือการหาตำแหน่งที่จะแสดง จริงๆ มันง่ายนิดเดียวนะ แต่ตอนนั้นกำลังหน้ามืด (ถึกเขียนโค้ด Actionscript ทั้งวัน)
จากรูปๆ StageX/StageY นี่ได้จาก MouseEvent เพื่อบอกตำแหน่งว่าที่เราคลิกนั้นห่างจากมุมซ้ายบนของโปรแกรมเท่าไหร่ ส่วน LocalX/LocalY คือตำแหน่งที่คลิกห่างจาก Component ที่เรากดเท่าไหร่ เวลาจะเอาตำแหน่งของ Component ใน Application ก็แค่เอา StageX/StageY – LocalX/LocalY
เป็นอะไรที่ไม่น่ายากเลย ตอนนั้นต้องไม่น่ามืดก็กำลังงัวเงียแน่นอนเลยหาวิธีคิดตั้งนาน ถ้ารู้ความหายของ Stage กับ Local Component นี้จะง่ายขึ้นมาทันทีเลยหละ
Source: popup.zip