UIComponent

ใน Flex เวลาจะใช้ชิ้นส่วนอะไรก็ตามชิ้นส่วนเหล่านั้นส่วนใหญ่จะมาจาก UIComponent ทั้งนั้น คราวนี้ก่อนที่มันจะวาดชิ้นส่วนขึ้นมาเป็นภาพมันดันมีขั้นตอนต่างๆ ที่คล้ายๆ Applet ซะนี่ลองดูลำดับตามด้านล่างละกัน

  1. Constructor
  2. CreateChildren
  3. CommitProperty
  4. UpdateDisplayList

อาจจะมีมากกว่านี้แต่หลักๆ ที่จะเจอกันบ่อยๆ คือสี่ขั้นนี้แหละ เริ่มจาก Constructor ก่อนที่จะใช้กำหนดค่าเริ่มต้นต่างๆ ให้กับ Component อันนี้ก็ไม่ค่อยมีอะไร เพราะภาษาที่มีคลาสเกือบทุกภาษาก็คงมีเหมือนกัน
ตัวถัดมาคือ CreateChildren จะถูกเรียกครั้งเดียวตอนที่เริ่มสร้าง Component โดยมีหน้าที่หลักๆ ก็คือเอาชิ้นส่วนย่อยๆ มาประกอบล่างเป็นชิ้นใหญ่ๆ เช่นฟอร์มที่ใช้ส่งข้อมูลต่างๆ ก็จะมีพวก Label, TextField, … ซึ่งจะไม่มีการเปลี่ยนแปลงรูปร่างหรือขนาดอะไรอีก เอามาใส่ในขั้นนี้ให้หมด รวมถึงตอนกำหนด Event ต่างๆ ให้กับมันด้วย
CommitProperty เป็นขั้นที่เตรียมวาดขึ้นหน้าจอแล้ว จริงๆ มีขั้นก่อนหน้านี้เล็กๆ น้อยๆ พอสมควรพวก Measure… ทั้งหลายแหละ ที่เอาไว้บอกว่า Component นี้จะมีขนาดเท่าไหร่แน่เวลาเอาไปประกอบกับชิ้นส่วนอื่น ซึ่งถ้าหากอยากเพิ่มความเร็วขึ้นอีกอาจจะต้องไปเขียนเพิ่ม(แต่ผมขี้เกียจอะนะ ขอใช้พวก VBox, HBox ซ้อนๆ กันละกัน) ขั้นนี้จะถูกเรียกตอนที่มีการเปลี่ยนแปลงข้อมูลซึ่งใส่มาในตัวแปรชื่อ data เช่นข้อมูลที่เกี่ยวข้องกับ Component นี้มีข้อมูลอยู่สามอย่างคือ ชื่อ วันเกิด เบอร์โทรศัพท์แล้วมีการเปลี่ยนค่าวันเกิดไปโดยเลือกจาก Component อื่นที่เป็นปฏิทิน ซึ่งจะทำให้เกิด Event ขึ้นมาชื่อ DataChange หรือ CollectionChange ตามแต่ประเภทข้อมูลที่อยู่ใน data ทำให้มีการเรียก invalidateDisplayList เพื่อให้มีการเปลี่ยนแปลงหน้าตาของ Component ให้ชื่อเปลี่ยนตามหรือวันเกิดเปลี่ยนตาม
UpdateDisplayList เป็นอะไรที่เรียกบ่อยที่สุดแล้ว เพราะว่าเมื่อมีเหตุการณ์อะไรก็ตามมันจะถูกเรียกตลอด เช่น ลากเม้าส์ กดเม้าส์ … แต่ก็ขึ้นอยู่กับ Component ด้วยว่าให้มีการเปลี่ยนแปลงหน้าตาบ่อยขนาดไหน อย่าง List เมื่อลากทีก็จะเรียกทีเพราะว่ามีผลต่อการเน้นสีแถวต่างๆ ดังนั้น ขั้นนี้ควรจะเป็นอะไรที่สามารถวาดได้เร็วๆ เช่นให้พื้นหลังเปลี่ยนสี เป็นต้น
เขียนมาทั้งหมดเพราะแต่ก่อนนี่โค้ดจะมั่วมาก กระจายๆ ไปทุกส่วนเลย – -” สุดท้ายก็เลยต้องหาทางจับย้ายไปย้ายมากว่าจะรู้ว่าควรวางไว้ที่ไหนเล่นนานพอสมควรเลย T T” แต่วันนี้กำลังเบลอๆ เนื่องจากฝนเมื่อวาน งืด แย่จริง วันนี้มีเรียนภาษาอังกฤษถึงดึกด้วย แย่แล้ว ~ ~”

About llun

Just a programmer

,

  • Benz034

    เป็นเหมือนกันเลยตอนแรก ก็มั่วๆ พอเล่นไปเล่นมา กว่าจะจับทางได้ …

  • Benz034

    เป็นเหมือนกันเลยตอนแรก ก็มั่วๆ พอเล่นไปเล่นมา กว่าจะจับทางได้ …

  • Pingback: แนท » Blog Archive » measure()

  • http://llun.info llun

    @iporsut อ่าอ่านสไลด์แล้วละเอียดสุดๆ ~ ~” แต่ผมมั่วไปก่อนเยอะแล้วแฮะ เจอสไลด์นี้อาจแก้ได้เร็วกว่านี้

  • http://www.flexdev.info/forum iporsut

    มีสไดล์อธิบายเรื่องนี้อยู่ครับ ลองดูครับ
    http://www.axelscript.com/wp-content/360flex.zip