เขียน Flex มาก็สองปีน่าจะเอามาใช้แต่แรก แต่สุดท้ายกว่าจะได้ลองและเอามาใช้จริงๆ ก็อาทิตย์ที่แล้ว T_T ไม่เป็นไรยังไงก็ยังได้ใช้ แต่ก่อนที่จะเอามาใช้ได้ ก็ต้องแบ่งโปรแกรมที่เขียนก่อนเลยเป็นส่วนๆ แล้วค่อยๆ เลือกว่าจะเขียน UnitTest ครอบส่วนไหนบ้าง อาทิตย์ที่แล้วก็เลือกได้ Component นึงเรียกว่าเป็น Component หลักเลยก็ว่าได้ คิดว่าคงได้ชำแหละเป็นส่วนๆ ก็อาทิตย์นี้ หลังจากที่ให้มันใหญ่โตมานาน ตอนแรกสุดตั้งใจว่า ให้มันสร้างรายงานออกมาเป็น HTML ให้แต่ยังทำไม่สำเร็จ สุดท้ายเลยเอาแค่ให้มีหน้าสำหรับทำงานให้ดูแล้วแสดงว่าตัวไหนผ่าน ไม่ผ่าน สำหรับ FlexUnit ที่ใช้เป็นรุ่นที่ยังไม่ออก (มันเคยออกไปยังหว่า -*- ) ดาวโหลดได้ที่ Adobe Labs มาดูโครงสร้างที่ใช้ก่อน เนื่องจากใช้ร่วมกับโปรเจคที่ทำปัจจุบัน เลยมีแฟ้ม src หรือส่วนต่างๆ อยู่แล้ว เพียงแต่ต้องการเขียนส่วนทดสอบเพิ่ม เลยสร้างแค่แฟ้ม test ขึ้นมา ตามด้านล่าง Project -src -test –Runner.mxml –Runner.as (ถ้าใครชอบเขียน script รวมอยู่ใน [...]
ทำไม Flex Listener ควรใช้ Weak Reference
วันนี้นั่งรื้อฟื้นความจำ อธิบายให้ @pitiphong_p ฟังว่าทำไมเวลา addEventListener แล้วต้องใส่ argument ช่องสุดท้ายให้เป็น true ลองดูก่อนละกันว่าหน้าตามันเป็นยังไง public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void useWeakReference หมายความว่าเวลาที่ GC มาเก็บกวาดแล้วนับว่ามี reference ไปที่ object นี้เท่าไหร่บ้าง มันจะไม่นับ reference นี้คำถามคือ ทำไมต้องทำให้ reference ไปที่ listener function เป็น weak ก็ลองดูจาก diagram ด้านล่างดู ที่ Observer จะมี reference ไปหามันจาก 2 Object คือตัวที่เป็นคนเพิ่มมันไปให้ Observable กับตัว Observable [...]
Flex Runtime Stacktrace
เวลาหาบั๊กในจาวาแบบขี้เกียจๆ มักจะให้มันพิมพ์ StackTrace ออกมาในจุดที่สงสัยขณะที่มันทำงาน พอมาอยู่บน Flex ก็อยากได้แบบนั้นมั่ง แต่มันไม่ได้เรียกอยู่ในคลาส Thread แบบตรงไปตรงมาเหมือนจาวา มันง่ายกว่านั้น มันอยู่ใน Error เลย var error:Error = new Error() trace(error.getStackTrace()) พอเปิด swf แล้วดักดู flashlog ก็จะได้ StackTrace ออกมาอย่างสวยงาม พร้อมผู้ต้องหาที่ต้องกำจัดมันทิ้ง
Flex 3 RSLs
ต้องหาวิธีลดขนาดไฟล์ swf ที่ออกมาจาก Flex จริงๆ ก็รู้อยู่แล้วว่าซักวันต้องทำ แต่เลี่ยงไปมาด้วยความขี้เกียจแล้วก็ได้ทำจนได้ เอามาจดไว้เลยละกัน ถ้าทำผ่าน Terminal ผ่านโปรแกรม mxmlc ตรงๆมี option ให้ใส่คือ -runtime-shared-library-path วิธีใช้ก็ง่ายๆ ใส่ตำแหน่ง .swc และก็ URL ที่ใช้สำหรับโหลด swf ที่สร้างมาจาก swc นี้ก็เสร็จ mxmlc Hello.mxml -rslp=/Developers/SDKs/Flex/frameworks/lib/framework.swc,http://somewhere.com/framework.swf,http://somewhere.com/crossdomain.xml framework.swc เป็นชุด Flex Component ที่ Adobe ใจดีคอมไพล์แล้วแถมมาให้กับ Flex SDK ทุกตัวอยู่แล้ว เอาตัวนี้แยกออกมาก็ลดได้เยอะพอสมควร(ที่ลองทำคือลดได้มากสุดมากกว่า 50%) จากด้านบนใส่ argument ไปสามตัวคือตำแหน่ง framework, URL สำหรับดาวโหลด swf และก็ policy ของ url นั้นว่าให้โหลด swf นั้นมาใช้ยังไงได้บ้าง [...]
[Flex] Event.target & Event.currentTarget
ใช้ประจำ เพื่อนถามประจำ แล้วก็ลืมเป็นประจำ ไม่รู้เป็นอะไรกับไอ้สองตัวนี้ แล้วก็ไม่ค่อยเอามาจดด้วย พอหาได้ครั้งนึงผ่านไปซักพักก็ลืมอีก วันนี้นึกได้ จดมันเลยละกัน Event.target : คือ component ที่ dispatch event นั้นออกมาก Event.currentTarget : คือ component ที่รับ event มาแล้วจัดการกับ event เช่นๆ File: Sample.mxml File: Boxes.mxml File: SubBoxes.mxml จากโค้ดด้านบน ถ้าคลิกที่ปุ่ม “Click me” ที่ console ขณะ debug ก็จะขึ้นข้อความมาสองบรรทัด บรรทัดแรกที่บอกว่า event.target จะเป็นอะไรก็จะโชว์บอกว่าคนที่ส่ง event นี่ออกมาคือ Button ส่วนอีกบรรทัดที่บอกว่า event กำลังเรียกใช้อยู่ที่ component ไหนก็จะเป็น component บนสุดที่เป็นคน handle event [...]