เนื่องจากผมมีโปรเจทที่ทำให้ต้องมาเขียน action script3
ผมจึงลง flash player debug version ทั้งเครื่องที่ทำงานและเครื่องส่วนตัว
ทำให้ผมได้รู้สาเหตุที่แท้จริงที่ flash crash บ่อยๆ นั้นก็คือ programmer ที่เขียนเองนั้นล่ะ ส่วนใหญ่ไม่เขียน error handler พอมี runtime error ขึ้นมามันก็ค้างน่ะสิ และพอ flash ไม่รู้จะทำอะไรเพราะไม่มี error handler มันก็ crash น่ะสิครับ
แบบว่าผมพึ่งจะใช้ debug version มา 5 เดือนแต่เจอพวกเขียน program แบบไม่มี error handler เกือบทุกเว็บที่มี flash แม้แต่ youtube
แบบว่า /me facepalm
AS3 มีความยืดหยุ่นของภาษามากเพราะเป็น ภาพ + code programmer จะต้องมีความเข้าใจ เป็นอย่างดีเกี่ยวกับ สิ่งที่ตัวเองกำลังจะเขียน ส่วนใหญ่ที่ค้าง เพราะ programmer สักแต่ว่าเขียน ๆให้ได้ผลตามที่ตัวเองต้องการ แต่ไม่สน อัลกอลิทึ่ม ว่าสิ่งที่ตัวเองคิดนั้นถูกต้องแล้วหรือยังครับ
function ของ flash ส่วนใหญ่นั้นทำงานได้แม้เราเขียนถูกต้องเพียง 50%ของ code ที่ควรจะเป้นแต่จะทำให้ค้างหาก คุณไม่ clear ค่ามัน เช่น Tween เป็นต้น และวิธีการเขียนอย่างถูกต้องและไม่ทำให้ กิน CPU นั้นจะต้องใช้ประสบการณ์ความเอาใจใส่มาก เพราะ flash คุณสามารถสร้างมันได้ทุกอย่าง แม้คุณกำลัง เขียน way ที่ผิดอยู่ก็ตาม
เรื่องคนเขียนโค๊ดห่วยนี่ยอมรับว่ามันมีจริงทุกที่ทุกภาษาครับ โดยเฉพาะการ optimize ต้องใช้ความรู้ความเข้าใจอย่างมาก แต่คนทั่วไปมักจะเอาแค่ให้มันรันได้เป็นพอ
บางครั้งมันก็ถูกจำกัดด้วยเวลาครับ เวลาที่เหลือน้อยทำให้โปรแกรมเมอร์หลายคนต้องตัดสินใจ ใช้วิธีทำให้งานจบเร็วมากกว่างานคุณภาพดีครับ
แต่เรื่องที่มี runtime error แล้วค้างนี่ผมว่าปัญหามันก็คงอยู่ที่ตัว adobe เองแล้วล่ะครับ
เพราะ framework ควรเป็นตัวดักจับ exception ที่หลุดรอดออกมาแล้วแจ้งเป็น message ให้ผู้ใช้งานรู้ครับ ไม่ใช่ค้างไปเลย
flashplayer debugger เป็นศัตรูกับ firefox นะครับ
บางครั้งโค้ดไม่ได้ทำให้ค้างอะไร แต่การเตือน error เล็กน้อยก็ทำให้ firefox ค้างได้
ไม่แน่ใจว่าใช้ firefox ในการเช็คหรือเปล่า
แต่ว่าต้องยอมรับว่า เป็นที่ผู้เขียนซะส่วนใหญ่ครับ ที่ทำให้เจอปัญหาแปลกๆประมาณนี้
เกี่ยวกับเวอร์ชั่นของ Flash,AS ที่ใช้เขียนด้วยครับ เว็บ Flash เวอร์ชั่นเก่าๆที่เขียนมานานแล้วมีอยู่เยอะมาก บาง function มันไม่ compatible กับ flash player รุ่นใหม่ ถ้าไม่มีดักจับ error ไว้ก็คง crash ล่ะครับ
ประเด็นนั้นคงไม่ถูกต้องนักครับ
คำสั่งเก่าๆ จะสามารถรันบนแฟลชเวอร์ชั่นใหม่ได้ทั้งหมดครับ
แต่คำสั่งใหม่ๆต่างหาก ที่จะไม่สามารถทำงานได้บนเวอร์ชั่นเก่า
ยกเว้นว่าคุณใช้สับสนกันระหว่างคำสั่งของ actionscript 1.0 , 2.0 และ 3.0 ซึ่งถ้าใช้ข้ามเวอร์ชั่นกัน มีผลแน่นอนครับ
ผมเจอบ่อยเลยล่ะ โค้ดตัวเดียวกันเอาไปคอมไพล์ผ่าน flash 8 กับ cs3 มันแสดงผลไม่เหมือนกัน ปัญหาเรื่องค่า z บ้าง ,Transparent บ้าง , root บ้าง ฯลฯ
ผมก็คิดว่าน่าจะเป็นที่ผมเขียนโค้ดไม่ถูกต้องด้วยล่ะมั้ง แต่ตอนผมเทสกับเวอร์ชั่นเก่าๆ มันไม่เจอปัญหาเลยนะ พอไปลองกับเวอร์ชั่นใหม่เจอประจำ
แกน z เพิ่งมามีตอน flash player 9.xx ครับ
ดังนั้นไม่แปลกที่นำไป compile ที่ flashplayer ต่ำกว่านั้น จะมีปัญหา
ไม่เสมอไปครับ เช่น Security Sandbox ซึ่งเพิ่งจะมีในช่วงเวอร์ชัน 9 หรือ 10 คือโปรแกรมเดิมยังรันได้อยู่ แต่ไม่ผ่านเรื่อง Secuiry เพราะไม่ได้เอา crossdomain.xml ไปวางบนเซิฟเวอร์ที่จะคุยด้วย
ผมว่าคนทำ flash ส่วนใหญ่เป็น graphic design มากกว่าเป็น programmer ซึ่งมี logic ดีกว่า ดังนั้นพอไปเขียนโปรแกรมมันก็เลยสุกเอาเผากิน
เหมือนเอาเว็บมาสเตอร์มาเขียน PHP แหละครับ ส่วนใหญ่โค้ดจะเละเทะ
หากสนใจเรื่องการเขียน Flash programming แวะมาที่ blog ผมได้นะครับ ยินดีพูดคุยแลกเปลี่ยน ^^ keng.orangeointeractive.com