AS3 ความเหมือนที่แตกต่าง

posted on 22 Apr 2007 01:14 by coreflash  in AS3
AS3 ความเหมือนที่แตกต่าง

จากการควบร่วมกิจการของ 2 ยักษ์ใหญ่แห่งวงการด้านมัลติมีเดีย Adobe และ Macromedia ซึ่ง Application ของทาง Macromedia ร่วมถึงชื่อของ Macromedia จะหายไปแต่จะใช้ชื่อของทาง Adobe แทนนั่น ทำให้ตอนนี้ Application ที่เกินขั้นภายใต้การร่วมตัวของทั้ง 2 ค่ายนั้นเป็นที่จับตามองของผู้ใช้ (End User) ร่วมถึงผมด้วยคนหนึ่งล่ะ สิ่งที่ผมจะกล่าวถึงในวันนี้นั้นก็คือ


Adobe Flash CS3

Adobe Flash CS3 สิ่งที่เปลี่ยนไปอย่างเห็นได้ชัดเจน
1. Logo (คงเห็นกันใน Blog ผมแล้วนะครับตรง Avatar ของผมครับ)
2. เรื่องของ WorkSpace (พื้นที่ใช้งาน) และ Icon ที่คุ้นตา ก็คล้ายเดิมครับแต่จัดให้ดูดีขึ้น
3. ActionScript 3 (ต่อไปผมเขียนเป็น AS3 นะครับ) อันนี้ล่ะครับผมจะพูดถึงในครั้งนี้ครับซึ่งเปลี่ยนแปลงไปเยอะมากครับ (เป็น OOP เต็ม แต่จะเต็มตัวหรือเปล่านะๆ)

ส่วนรายละเอียดที่เปลี่ยนแปลงไปในส่วนอื่นๆนั้น ไว้ผมจะเอามาเขียนให้อ่านกันอีกที่นะครับ ขอพูดถึง AS3 ก่อน

Adobe Flash CS3 ที่มาพร้อมกับ ActionScript 3 ความเหมือนที่แตกต่างๆ

จากการทดลองเขียน AS3 ผมบอกได้เลยครับว่าเหมือน AS2 แต่นะครับแต่ มันไม่ได้เหมือนเอาซะหมดเลยที่เดียว ที่สำคัญคือความคุ้นเคยหรือความเข้าใจแบบเดิมนั้นจะนำมาใช้ใน AS3 ไม่ได้อีกแล้วครับ ผมอธิบายแบบให้เห็นกันจะๆไปเลยนะครับ

1. ตัวแปรที่คุ้นเคย
_root ไม่มีแล้วอ้างถึงได้จาก flash.display.DisplayObject.stage
_level ก็ไม่มีแล้วครับ ให้ไปอ้างเอาตรงที่ flash.display เอาครับ
ผมจะใช้ ตัวแปร พวก _root หรือ _level บ่อยมากครับ

2. Event Drivent ต่างๆ
จากข้างต้นไม่เท่าไรครับยังพอทนครับแต่การอ้างถึง Event Drivent หรือ Event Handling จะไม่สามารถอ้างแบบเดิมได้อีกแล้ว

ตัวอย่าง
AS2 ผมสามารถทำแบบนี้ได้เลยครับ เช่น
ผมมี MovieClip ที่อยู่บน Stage ผมให้ชือ Instance Name เอาไว้ว่า "MC" จากนั้นผมก็ Edit in Place แล้วก็เขียน Code ที่ผมต้องการลงไป Timeline ที่ 1 ของ Layer ที่ 1 ดังนี้

this.onPress = function() {
/* On Click This MC */
}

แต่ถ้าเป็น AS3 คุณก็ลองเอา Code นี้ของผมไปลองคุณจะรู้ว่ามันไม่สามารถอ้างถึง Event Drivent แบบนี้ได้อีกต่อไปแล้ว แล้วมันจะเขียนแบบไหนล่ะ ตามมาดูกันครับ

1.ขั้นตอนแรกทำการสร้าง Function ขึ้นมาเพื่อรองรับการทำงานของ Event นั้น
function onClick(e:MouseEvent):void
{
/* On Click This MC */
}

2.ทำการเพืมกระบวนการตรวจจับเหตุการณ์ที่ Mouse ในแบบการ Click Mouse ให้กับ MC ที่เราสร้างขึ้นครับ
this.addEventListener.(MouseEvent.CLICK, onClick);

แค่นี้ก็เรียบร้อยแล้วครับ

ซึ่งจากการทดลองเขียนโปรแกรมเล็กๆ น้อยๆ ทำให้ผมเข้าใจถึงหลักการออกแบบ และการจัดหมวดหมู่ของ Object ใน Flash ได้ดีขึ้น จดจำได้ง่ายขึ้น

อาจจะเป็นเพราะผมล้างมือจากการเขียน AS2 มาก่อนหน้าพักใหญ่ ทำให้ผมศึกษาตัว AS3 ได้ดีขึ้น และเข้าใจมันได้ง่ายกว่าเดิม (คือไม่ได้ยึกติดกับ การเขียน code ในแบบ AS2 สักเท่าไร แต่ก็มี หงุดหงิดบ้างเป็นบ้างครั้ง จริงๆ ผมคุ้นกับการเขียนในแบบ AS1 มากกว่าครับ)

พอลองอ่าน Help แล้วทำให้ผมเข้าใจเลยว่า การเปลี่ยนจาก Macromedia มาเป็่น Adobe ทำให้มีการปรับโครงสร้างหลายๆ อย่างในตัวของ AS3 อะไรที่มันดูกำกวมก็ปรับให้มันดีขึ้น ชัดเจนขึ้น แต่ผมก็ยังไม่ได้ลองการเขียน Code แบบเชิงลึกเลยใน AS3 แต่จากการได้อ่าน Help แล้วทำให้ผมทราบถึงการกลับมาอันยิ่งใหญ่ และ เต็มไปด้วย Tools อื่นๆ ที่จะเข้ามาเพิ่มขีดความสามารถให้กับ FLASH และผมว่าเป็นการเปลี่ยนแปลงไปในทางที่ดีแน่ๆ

แต่เท่าที่ผมได้ลองอ่านในบทความต่างๆใน Adobe Site นั้นทำให้ผมยอมรับถึงการเตรียมการของช่วงเวลาในการออกกลุ่มของ Software มา Support การทำงานของกันและกัน มันเป็นการว่างหมากทั้งหมดเอาไว้อยู่แล้ว และยังทำให้การศึกษา Software ตัวได้ตัวหนึ่งยังทำให้เข้าใจ Software อีกตัวหนึ่ง ได้ง่ายขึ้นอีกด้วย

ไว้คราวหน้า ผมจะเอา Help ในส่วนการ function ต่างที่ได้ทำการย้าย หรือ การเอาออก แต่ที่แน่ๆ ที่ผมหงุดหงิด เอามักๆ คือ เขาเอา function eval ที่ผมใช้อยู่ประจำออกไปแล้วอ่ะ ตอนนี้ทำให้ผมนึกลูกเล่น และ การเขียน ActionScript แบบ Dynamic ไม่ออกเลยครับ แต่ผมว่ามันน่าจะมีนะ เดี๋ยวผมได้ทริกอะไรเด็ดๆ แล้วจะเอามาบอกครับ

วันผมขอตัวก่อนนะครับ  
edit @ 2007/05/29 13:22:50