ช่วงหลังต้องทำทั้งฝั่งเซิร์ฟเวอร์ที่เป็นจาวากับ Flex พอเปิด IDE สองตัวก็ทำให้รู้ว่าแรม 2 GB ที่มีอยู่มันช่างน้อยเสียนี่กระไร จะเพิ่มแรมแบบไม่เสี่ยงก็แพงชิบหาย(DDR3 4 GB Apple ขายหมื่นกว่าบาท -_-!) จะเพิ่มเองโดยไปหาแรมในท้องตลาดก็ยังไม่กล้า เมื่อวานเลยหาวิธีแก้ด้วยการเขียน Flex แบบดิบๆ ด้วย IDE พื้นบ้าน TextMate กับ compile และ debug ผ่าน command line เอา วันนี้ก็เลยมาจดกันลืมเช่นเคย * Flash กับ AIR ใช้ตัว debug คนละตัว ถ้าจะ debug AIR ต้องใช้ adl แต่ตอนนี้จะเขียนถึงแค่ fdb เพราะยังใช้ adl ไม่ค่อยคล่อง(เหมือนมันจะใช้งานได้ไม่เหมือน fdb ด้วยอ่ะ ไม่มีให้ใส่ breakpoint หรือ หยุดในจุดที่ค้างได้เลยอ่ะ) เริ่มจากดาวโหลด [...]
ANT_OPTS
แต่ก่อนพยายามจะใส่ไปใน ant config file เลยแต่ว่าไม่สำเร็จ ทำทีก็ต้องค้นใหม่ที เลยเอามาแปะไว้กันตัวเองลืมซะเลย $export ANT_OPTS=”-Xmx1024M -Xms512M” Xmx1024M ไว้สำหรับกำหนดขนาดหน่วยความจำมากที่สุดที่ยอมให้ ant ใช้เวลาคอมไพล์ Xms256M ไว้สำหรับกำหนดขนาดหน่วนความจำเริ่มต้นที่จะให้ ant ใช้ได้ ที่ต้องทำเพราะช่วงหลังขนาดโปรเจค Flex มันใหญ่มากซะจนค่ามาตรฐานมันไม่พอจนคอมไพล์แล้วเกิด “java.lang.OutOfMemoryError: Java heap space” ว่าจะใส่เป็น option ถาวรใน environment variable แต่ก็ไม่ได้คอมไพล์บ่อยๆ ด้วยสิ ปล่อยมันไว้แบบนี้ต่อไปละกัน ยังไงก็จดไว้แล้ว ^^!
Padding & Margin
เขียนเว็บมานานพึ่งเข้าใจความแตกต่างระหว่าง margin กับ padding เมื่อไม่นานมานี้แหละ แล้วก็พึ่งเห็นว่าใน Flex มีแต่ padding ไม่มี margin ลองวาดรูปดูก็เริ่มสงสัยเหมือนกันว่ามันจะมีไว้ทำไมหว่าทั้ง 2 อัน เพราะหน้าที่มันคล้ายกันมาก… ลองดูรูปด้านล่างละกัน margin คือค่าช่องว่างระหว่าง component นอกกับ component ที่ใส่ค่า margin ส่วน padding คือค่าช่องว่างระหว่าง component ที่ใส่ค่า padding กับ component ด้านใน จริงๆ ดูตามรูปด้านบนก็คงพอจะเข้าใจหละ(มั้ง) แต่จริงๆ มีแต่ padding ก็น่าจะใช้ได้ไม่น่าจะแตกต่างกับมีทั้งสองค่าหรือป่าวนะ
mx_internal
เจออะไรแปลกใหม่อีกหละ เพราะว่าต้องดัดแปลง TabNavigator นิดหน่อยโดยการจับ Tab ย้ายมาอยู่ด้านล่างตอนแรกนึกว่าจะง่ายๆ แค่กำหนด property ไรนิดหน่อยก็น่าจะเสร็จ ที่ไหนได้ ต้องเขียนเพิ่มเอง -_-! แล้วก็พบปัญหาว่าไอ้ component อื่นๆ ที่อยู่ใน TabNavigator เนี๊ยะ มันกำหนดตำแหน่งด้วยตัวแปร border ที่ method layoutChrome override protected function layoutChrome(unscaledWidth:Number, unscaledHeight:Number):void { super.layoutChrome(unscaledWidth, unscaledHeight); // Move our border so it leaves room for the tabs if (border) { var borderOffset:Number = tabBarHeight; border.setActualSize(unscaledWidth, unscaledHeight – borderOffset); border.move(0, borderOffset); [...]
Cover popup
ไม่ได้เขียนถึง Actionscript นานจริงๆ ช่วงหลังเขียนมันเยอะมากจนกลับบ้าน ไม่อยากเขียนถึงอีกเลยทิ้งช่วงยาว เมื่อวานบ่นๆ ไปใน twitter จน @iporsut เตือนบอกว่าไม่ได้เขียนนานและ เลยเขียนต่อดีกว่า ช่วงหลังเริ่มเจอปัญหาแปลกๆ แต่วันนี้เอา Component ที่ทำแบบเร่งรีบมาให้ดูซะหน่อย หลังจากกลับมาเขียน Component นี้ทำให้รู้อะไรเพิ่มสองสามอย่าง Custom component ถ้าอยากให้ใส่ child component แบบ mxml เวลาเอาใช้ได้ต้องเขียนด้วย Actionscript เท่านั้น คนอื่นอาจเจอมาก่อนนานแล้ว แต่ผมพึ่งเคยเจออ่ะ -_-! เพราะแต่ก่อนจะเขียน Actionscript อย่างเดียวแต่ช่วงหลังจะใช้ mxml ขึ้นโครงก่อนว่า Component นี้จะมีอะไรบ้าง แล้วเขียน Actionscript source แยกไปอีกไฟล์ ก็เลยเกิดปัญหานี้ขึ้น เขียน State ด้วย Actionscript อย่างเดียว อันนี้ไว้เขียนแยกละกัน … การหา Component position ที่คลิก [...]