AS3

Introduction to AS 3.0 Part II

posted on 08 Jun 2007 18:04 by coreflash  in AS3

บทความนี้สำหรับ ผู้เริ่มต้นหรือบุคคลทั่วไป ผู้ใช้เคยเขียนโปรแกรมมาบ้าง ผู้ใช้งานระดับผู้พัฒนาโปรแกรม

Introduction to AS 3.0 Part II
ครั้งนี้ขอยังไม่เริ่มเขียนโปรแกรมนะครับ ขออธิบายอะไรเพิ่มเติมอีกหน่อยครับ เพราะเท่าที่ได้ลองอ่านแล้วรู้สึกยังขาดส่วนที่สำคัญๆ ไปครับ ขอเพิ่มเติมรายละเอียดให้ครอบคุลมก่อนครับ

คุณสามารถเขียน AS 3.0 ได้จาก Adobe Flash, Adobe Flex Builder 2, Flex SDK ฯลฯ ซึ่งจริงๆ แล้วคุณสามารถเขียน AS 3.0 ได้จากโปรแกรมพวก Texteditor ได้เลยครับ แต่คุณจะต้องใช้ โปรแกรมข้างต้นที่กล่าวมานั้น Compile ซึ่งจริงๆ แล้วคุณสามารถหาตัว Software ได้ไม่ยาก เรามาเริ่มทำความเข้าใจในหลักการเขียน AS 3.0 กันเลย

ขั้นตอนเบื้องต้นในการเขียน AS 3.0
การเขียนโปรแกรมโดยทั่วไปนั้น จะมีขั้นตอนของการเขียนโปรแกรมแบบง่ายๆ ดังนี้
1.ออกแบบโปรแกรม
2.ลงมือเขียนโปรแกรม
3.Compile โปรแกรมด้วย Flash, Flex Builder 2 หรือ Flex SDK ฯลฯ
4.ทดสอบโปรแกรมและนำไปใช้งาน
จากลำดับขั้นตอนทั้งหมดที่กล่าวมาข้างต้นมันไม่สำคัญเลย คุณสามารถสลับลำดับได้ตามความเหมาะสม แต่โดยคราวๆ แล้วก็จะมีขั้นตอนประมาณนี้ในการเขียนโปรแกรม

เขียนโค้ดของคุณได้ที่ไหนบ้าง
คุณสามารถเขียน AS 3.0 ได้ทุกที่ก็จริง แต่การเขียนโค้ดนั้นๆ ก็ต้องดูความเหมาะสมเป็นหลัก และ ก็ขึ้นอยู่กับเครื่องมือ (Flash หรือ Flex หรือ ฯลฯ) ที่คุณใช้ในการเขียนโค้ดของคุณด้วย ซึ่งเครื่องมือแต่ล่ะอันนั้นจะมีลักษณะของการเขียนโค้ดไม่เหมือนกันเรามาดูกันว่ามีอะไรบ้าง

เขียนโค้ดลงบน Frame ใน Timeline ของ Flash
การเขียนโค้ดในโปรแกรม Flash นั้นคุณสามารถลงโค้ดของคุณบน Frame ใน Timeline ได้ ซึ่งโค้ดนั้นจะถูกประมวลผลเมื่อ Playback Head วิ่งมา ณ Frame นั้นๆ รวมไป ถึงการลงโค้ดบน Frame ใน Timeline ของ MovieClip Symbol ด้วย การลงโค้ดในลักษณะนี้ถือว่าง่าย และ รวดเร็วที่สุดก็จริง แต่ ถ้าหากคุณกำลังพัฒนา Application ขนาดใหญ่ หรือ โปรแจกระดับชาติ การทำเช่นนี้อาจเป็นการฆ่าคุณได้ หากคุณต้องทำการปรับปรุงหรือแก้ไขการทำงานของ Application นั้นอยู่เสมอ เชื่อหรือไม่ว่าการแก้ไขโค้ดเพียงเล็กน้อยของคุณแต่กลับใช้เวลาในการจัดการมากกว่าการเขียนโค้ดลงไปใหม่เลยก็เป็นไปได้ แต่ทางเลือกที่คุณใช้ทั้ง 2 ทางนั้น (1.หาโค้ดบรรทัดที่ต้องการแก้ไขให้เจอ 2.เขียนโค้ดใหม่ โดยการสร้างตัวจัดการการทำงานนั้นๆ ขึ้นมาใหม่แทนตัวเดิมไปเลย) กลับทำให้การแก้ไขโค้ดในภายหลังยิ่งดูเป็นเรื่องยากขึ้นไปอีก เมื่อมีการขยายต่อการทำงานจากเดิม (คงพอนึกออกนะครับสำหรับคุณๆ ที่ชอบเขียนโค้ดแบบขอไปที เวลาไปแก้โค้ดแล้วจำไม่ได้ว่าตัวแปร หรือ ฟังค์ชั่นนี้ใช้ที่ไหนบ้าง เจอเข้าบ่อยนี้ถึงกับเบื่อการเขียนโค้ดไปพักหนึ่งเลยครับ)

เมื่อเจอเหตุการณ์ในลักษณะนี้เข้าทางผู้พัฒนา Application ด้วย Flash ก็แก้ปัญหานี้ด้วยการเขียนโค้ดลงบน Frame แรก แล้วทำการแยกเป็น Layer ที่เอาไว้จัดการ การเขียนโค้ดโดยเฉพาะ ซึ่งวิธีนี้ทำให้การแก้ไขปัญหาต่างๆ แลดูจะง่ายขึ้นในระดับหนึ่ง แต่เมื่อไรก็ตาม ที่คุณพัฒนา Flash Application ด้วยไฟล์หลายๆ ไฟล์มาประกอบกันเข้าล่ะก็ คุณก็ต้องทำการ Copy แล้วก็ Paste โค้ดเอา หากการทำงานนั้นมันเหมือนๆ กัน แต่เมื่อไรก็ตามที่ต้องแก้ไขการทำงานอย่างหนึ่งอย่างใดใหม่ คุณก็ต้องไปทำการ Copy แล้วก็ Paste ลงไปทุกไฟล์ (แค่คิดยังไม่ได้ทำก็เหนื่อยแล้วครับ) ซึ่งมันก็ยังไม่เป็นวิธีที่ดีที่สุด

วิธีการที่ดีที่สุดนั่นก็คือ การเขียน AS ไฟล์เอาไว้ข้างนอก (External ActionScript Files : Text file with the .as extension) แล้วทำการimport เข้าไป ซึ่งวิธีนี้ถือว่าเป็นวิธีที่ดีที่สุด ในการที่จะพัฒนา Application ด้วย Flash

ฝังโค้ดใน MXML File ของ Flex Builder 2
การเขียนโค้ดในโปรแกรม Flex นั้นคุณสามารถเขียนโค้ดลงใน Tag <mx:Script> ใน MXML File ของ Flex เหมือนการเขียนโค้ดลงบน Frame ใน Timeline ของ Flash นั่นล่ะ

เขียนโค้ดลงใน External ActionScript File
ถ้าโปรแจกของคุณมีการใช้ External ActionScript File ในการเขียนโค้ดแล้วล่ะก็ การเขียนโค้ดแบบนี้ถือว่าเป็นทางเลือดที่ดีที่สุดก็จริง แต่คุณก็สามารถทำการสร้าง External ActionScript File ได้ 2 แบบ มันขึ้นอยู่กับคุณ ว่าคุณต้องการที่จะสร้าง External ActionScript File แบบไหน

แบบที่ 1 Unstructured ActionScript code: เขียนคำสั่งเป็นบรรทัดต่อบรรทัด หรือ สร้างฟังค์ชั่นเอาไว้เพื่อเรียกใช้งาน ซึ่งเหมือนกับการเขียนโค้ดลงบน Timeline หรือ ใน MXML File ใน Tag <mx:Script> ถ้าเขียนใน Tag <mx:Script> ของ Flex MXML จะเขียนได้แบบนี้ <mx:Script source="Box.as" />

แบบที่ 2 ActionScript Class: เขียน External ActionScript File ในลักษณะของ Class File โดยรวมเอา Property, Method และ Event เอาไว้ หากคุณใช้วิธีการนี้ในการสร้าง External ActionScript File คุณต้องทำการสร้าง instance ของ class นั้น ๆ ก่อน ซึ่งจริงๆ คุณสามารถทำได้ 2 แบบ ด้วยกันดังนี้

2.1 Class ที่ทำการเรียกใช้ถูกจัดเก็บในลักษณะของ Package ที่มีการ Build-In เอาไว้ คุณสามารถใช้คำสั่ง import เพื่อทำการเรียกใช้ Class นั้นๆ ได้ดังนี้
ตัวอย่างการเขียนโค้ด
import flash.display.MovieClip; // Import มาเฉพาะ Class MovieClip;

หากคุณต้องการ Class ทั้งหมดภายใน Package นั้นคุณสามารถเขียนโค้ดได้ดังนี้
ตัวอย่างการเขียนโค้ด
import flash.display.*; // Import Class ทั้งหมดภายใน Package flash.display มาใช้;

2.2 เขียนโค้ดในลักษณะการอ้างถึง Class ที่ทำการสร้างขึ้นเอง ให้ทำการสร้าง Class file นั้นเอาไว้ที่เดียวกับไฟล์ที่เราจะทำการเรียกใช้ Class เช่น ถ้าเป็น Flashให้เอาไฟล์ *.fla กับ Box.as ไว้ที่เดียวกัน หากเป็น MXML ของ Flex ก็ให้เอาไฟล์ Box.as ไปไว้ที่เดียวกับ File *.mxml
ตัวอย่างการเขียนโค้ด
var smallBox:Box = new Box(10,20);

บทต่อไปเริ่มเขียนโปรแกรมแรกกันเลยครับ

Introduction to AS 3.0 Part I

posted on 04 Jun 2007 18:16 by coreflash  in AS3

บทความนี้สำหรับ ผู้เริ่มต้นหรือบุคคลทั่วไป ผู้ใช้เคยเขียนโปรแกรมมาบ้าง ผู้ใช้งานระดับผู้พัฒนาโปรแกรม

Introduction to AS 3.0 Part I
ก่อนจะไปถึงเรื่องของการ Coding AS 3.0 ผมขออธิบายถึง สถาปัตยกรรมของ AS 3.0 เพื่อเป็นการปรับความรู้ของทุกท่าน ให้เป็นไปในทิศทางเดียวกัน และเมื่อพูดถึงคำศัพท์คำใดในบทหลังๆ จะได้ทำความเข้าใจได้ตรงกัน ซึ่งจะลดคำถามต่างๆ ที่จะตามมาได้เป็นอย่างดีครับ แต่สำหรับท่านที่คิดว่าทำความเข้าใจมาดีอยู่แล้วใน สถาปัตยกรรมของ AS 3.0 ก็สามารถข้ามไปได้เลยครับ แต่ก็ต้องรอผมเขียนอยู่ดีครับ

ActionScript 3.0
AS (ActionScript) เป็นภาษาที่ใช้ใน Flash Player ซึ่ง Flash Player ยอมให้มีการติดต่อสื่อสารกัน (Interactivity), การควบคุมและจัดการข้อมุล (Data Handling) และอื่นๆ อีกมากมายใน รูปแบบ Flash Content และ Flash Application

AS จะถูกดำเนินการโดย AVM (ActionScript Virtual Machine), AVM ถือว่าเป็นส่วนหนึ่งในFlash Player

AS Code โดยทั่วไปจะถูก Compile โดย Compiler ให้อยู่ในรูปของ Bytecode ซึ่ง Compiler นี้จะถูกรวมเข้ากับ โปรแกรม Flash Authoring Tool, Flex Builder, Flex SDK และ Flex Data Services โดยที่ Bytecode จะถูก embed ใน SWF ไฟล์ ซึ่งมันจะถูกประมวลผลด้วย Flash Player อีกที

AS 3.0 เป็นภาษาที่ออกแบบมาโดยใช้หลักการของ OOP (Object-Oriented Programming) ซึ่งง่ายต่อการพัฒนา เรามาดูถึงลักษณะเด่นใน AS 3.0 กันดีกว่า
- ActionScript Virtual Machine ใหม่ (AVM2) ซึ่งรวมไปถึง Bytecode แบบใหม่ที่มีการออกแบบสถาปัตยกรรมใหม่ๆ ลงใน Bytecode เพื่อเพิ่มประสิทธิ์ภาพในการจัดการ และการประมวลผล
- ตัว Compiler ที่พัฒนาขึ้นมาใหม่นี้ใช้มาตราฐานของทาง ECMAScript (ECMA-262)
- ปรับปรุง API (Application Programming Interface) ในส่วนของการจัดการในระดับ Low-Level Control ของ Object
- ใช้มาตราฐานของ ECMA-262 Edition 4 ในการกำหนดคุณสมษัติต่างๆ ของ AS 3.0
- XML API ใช้หลักการพื้นฐานของ ECMAScript for XML (E4X) โดยใช้มาตราฐานของ ECMA-357 Edition 2 ในการกำหนดคุณสมษัติ ซึ่ง E4X ที่เพิ่มเข้ามาใหม่นี้จะเอาไว้จัดการกับข้อมูลประเภท XML โดยเฉพาะ
- Event Model จะใช้คุณสมษัติของ DOM (Document Object Model) Level 3 ในการกำหนดคุณสมษัติ

ข้อได้เปรียบของ AS 3.0
AS 3.0 จะไม่ได้เขียน Code แบบเดียวกับ AS ก่อนหน้านี้ มันถูกออกแบบมาเพื่อสร้าง Application ที่มีความซับซ้อน พร้อมทั้งรองรับข้อมูลขนาดใหญ่ สนับสนุนการนำกลับมาใช้ใหม่(Reusable code bases) และ รวมถึงการเขียนโปรแกรมในลักษณะของ OOP (Object-Oriented Programming) ขณะที่ AS 3.0 ไม่ต้องการข้อมูลใดจาก Adobe Flash Player 9 มันกับใช้ช่องทางพิเศษที่จัดเตรียมเอาไว้ให้เฉพาะใน AVM2 ซึ่งเป็น Virtual Machine ใหม่ของ AS 3.0 ที่สามารถประมวลผลได้ไวกว่าเวอร์ชั่นเดิมถึง 10 เท่าตัว

AVM1 จะใช้ในการประมวลผล AS 1.0 และ AS 2.0 ซึ่ง AVM1 ยังคงใช้งานได้ดีใน Adobe Flash Player 9 แม้ว่าจะเป็น AS เวอร์ชั่นเก่าก็ตาม

มีอะไรใหม่ใน AS 3.0
แม้ว่า AS 3.0 จะประกอบไปด้วย Class และ Feature ต่างๆ ที่คล้ายกับ AS เดิมก็จริง แต่ AS 3.0 นั้นมีการออกแบบโครงสร้างทางสถาปัตยกรรมใหม่ และ แนวคิดใหม่ที่แตกต่างจาก AS เดิมอยู่มากเลยที่เดียว สิ่งที่เพิ่มเข้าไปใหม่ใน AS 3.0 นั้นรวมถึงหลักการเขียนโปรแกรม และ การปรับปรุง Flash Player API ใหม่ให้สามารถควบคุมถึงระดับ Low-Level Object

Core language features
AS 3.0 ได้นิยามพื้นฐานในระดับ Blocks ของภาษา เช่น Statement, expression, conditions, loops and types โดยใช้หลักการใหม่ๆ เพื่อเพิ่มประสิทธิภาพในการพัฒนาให้เร็วขึ้น ดังนี้

- Run-time exception ตรวจจับ Error ได้ดีกว่าเวอร์ชั่นก่อน โดยจะแสดงรายละเอียดถึงระดับ Source file, Line ซึ่งทำให้สามารถจัดการกับ Error ได้รวดเร็วขึ้น

- Run-time types ตรวจสอบชนิดของ Variable ในขณะ Run-Time ต่างจาก AS 2.0 ที่ตัวแปรที่ประกาศไว้ก่อนหน้านั้นในขณะ Run-Time จะถูกเปลี่ยนเป็น Dynamic type ทั้งหมด การตรวจชนิดของตัวแปรนี้จะทำให้การใช้หน่วยความจำเป็นไปอย่างมีประสิทธิภาพมากกว่าเดิม

- Sealed Classes AS 3.0 ได้นำหลักการของ Sealed Classes มาใช้ โดย Sealed Class จะทำการกำหนดให้ Class ที่ถูกสร้างขึ้นไม่สามารถขยาย Properties และ Methods ในขณะ Compile Time ข้อดีคือ ใช้ Memory ได้อย่างเต็มประสิทธิภาพ เนื่องจากไม่ต้องทำการสร้าง Hash Table ไว้ภายใน เพื่อรองรับการอ้างถึงจาก Instance ของ Object นั้นๆ โดยทั่วไปแล้ว Class ที่ถูกสร้างขึ้นภายใน AS 3.0 จะถูกกำหนดให้ใช้ Sealed Class โดยปริยาย แต่ คุณก็สามารถสร้าง Dynamic Class ได้จาก dynamic keyword.

- Method closures AS 3.0 เปิดให้มีการใช้ Method Closure โดยอัตโนมัติ ข้อดีคือ มันสามารถจดจำ Object ต้นแบบของมันได้ ซึ่งข้อดีข้อนี้เองจะเป็นประโยชน์สำหรับ event handling แต่ใน AS 2.0 Method Closure จะไม่จำว่ามันมี Object ต้นแบบมาจากไหน ขยายต่อมาจากที่ Class ใด ซึ่งมันจะใช้ Method Closure ก็ต่อเมือมันถูกเรียกใช้งานเท่านั้น

- ECMAScript for XML(E4X) AS 3.0 ใช้มาตราฐาน ECMA-357 ซึ่งเป็นภาษาที่ออกแบบมาเพื่อจัดการ XML ซึ่งรวมไปถึง XML-pasing APIs ที่เอาไว้ตรวจสอบ XML โดยเฉพาะ ผมจะสรุปข้อมูลโดยละเอียดให้อีกทีตอนหลังครับ...

- Regular expressions AS 3.0 รวมเอา Regular expression ไว้ไนด้วยเพื่อใช้ในการค้นหาตัวอักษรโดยเฉพาะ ซึ่ง Support ใน AS 3.0

- Namespaces จะเป็นเครื่องมือหลักเลยใน Universal Resource Identifier (URI) และ ใช้ใน XML รวมไปถึงใน E4X ด้วย

- New primitive types AS 2.0 นั้นมีแต่ Number ที่เป็นทั้ง จำนวนเต็ม แะล จุดทศนิยม ส่วนใน AS 3.0 ได้ทำการแยกออกเป็น int และ uint
- int ขนาด 32-bit ตัวเลขที่ติดลบ เพื่อเพิ่มประสิทธิภาพ และ ความเร็ว ในการคำนวณทางคณิตศาสตร์ของ CPU ใช้ประโยชน์ในการควบคุมการเวียนซ้ำ (Loop) และ ตัวแปรชนิด Interger เป็นต้น
- uint ขนาด 32-bit ตัวเลขไม่ติดลบ ใช้สำหรับการกำหนดค่าสีของ RGB เป็นต้น

Flash Player API
Flash Player API ใน AS 3.0 จะประกอบไปด้วย Class ใหม่ที่ยอมให้คุณเข้าถึงในระดับล่าง ซึ่งเปลี่ยนแปลงไปจากเดิมเยอะที่เดียวเรามาดูส่วนที่เปลี่ยนแปลงไปกันดีกว่า

- DOM3 event model Document Object Model Level 3 จัดเตรียมช่องทางในการสร้าง และ ควบคุมเหตุการณ์ Object ใน Application สามารถติดต่อสือสารกันได้ ภายหลักจากเปลี่ยนมาใช้ World Wide Web Consortium DOM Level 3 ในการกำหนด Event Specification ทำให้เข้าใจได้ง่ายกว่า มีประสิทธิภาพมากกว่า AS เวอร์ชั่นก่อนๆ

- Display list API มีให้อยู่แล้วใน Flash Application ซึ่งแสดงให้เห็นในลักษณะ Visual Element สามารถเรียกใช้ได้เลย

- Handling dynamic data and content AS 3.0 รวมเอากลไกในการควบคุมการ loading และ handling ข้อมูลภายใน Flash Application ซึ่งสามารถเรียกใช้ผ่านไปยัง API ก็ได้ และตัว Flash เองได้ จัดเตรียม Class เอาไว้ให้ ไม่ว่าจะเป็น Loader class, URLLoader class, Socket class เป็นต้น

- Low-level data access API ในระดับ Low-Level ได้ถูกจัดเตรียมเอาไว้ให้พร้อมใช้งานได้ผ่านทาง AS 3.0 เช่น URL Stream class ถูกใช้งานใน URLLoader และ Sound API จะประกอบไปด้วย SoundChannel และ SounMixer class ซึ่งเป็น class ในระดับ Low-Level และ ยังมี API ใหม่ที่เอาไว้ควบคุมการ Load SWF File หรือ ข้อมูลที่ต้องการความปลอดภัยสูง

- Working with text AS 3.0 รวมเอา flash.text package เอาไว้สำหรับจัดการกับ Text โดยเฉพาะเช่น TextLineMetrics class ใช้จัดการ Text ใน TextField แทนที่ TextField.getLineMetrics() ใน AS 2.0 และยังมี Class ในระดับ Low-Level อีกเยอะเอาไว้จัดการ Text ที่ AS 3.0 เตรียมเอาไว้ให้

ความเข้ากันได้กับ AS เวอร์ชั่น
โดยทั่วไปแล้ว Flash Player นั้นสามารถที่จะเข้ากันได้กับ AS ทุกเวอร์ชั่นก็จริงแต่ก็มีข้อจำกันอยู่เหมือนกันซึ่งก็ควรที่จะรู้เอาไว้ด้วย
- ไม่สามารถเขียน Code ในแบบ AS 1.0 หรือ AS 2.0 ใน AS 3.0
- AS 3.0 สามารถ load SWF file ที่ถูกเขียนโดย AS 1.0 และ AS 2.0 ได้แต่ไม่สามารถอ้างถึงตัวแปรหรือฟังค์ชั่นที่อยู่ภายในได้
- AS 1.0 และ AS 2.0 ไม่สามารถ load SWF file ที่เป็น AS 3.0 ได้ ซึ่งก็รวมถึง Flash 8 และ Flex Builder 1.5 ด้วย
- Code ของ AS 1.0 และ AS 2.0 นั้นไม่สามารถนำมาใช้กับ AS 3.0 ได้ เนื่องจากการปรับและโยกย้าย Class ต่างๆ

Picture 1.1
ตารางเปรียบเทียบระหว่าง AS 1.0, AS 2.0 และ AS 3.0

ในบทต่อไปผมจะเริ่มพูดถึงในส่วนของ AS 3.0 ในส่วนของการเขียนโปรแกรมแล้วนะครับ

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

posted on 27 Apr 2007 18:11 by coreflash  in AS3

จากครั้งที่แล้วที่ผมได้พูดเอาไว้ถึงการโยกย้ายหรือการรวม Package เอาไว้ด้วยกันเพือความง่ายต่อการเรียกใช้ตอนนี้ผมเอา link ที่รวมเอาการโยกย้ายทั้งหมดเอามาให้แล้วครับ

http://livedocs.adobe.com/flex/2/langref/migration.html

ถ้าใครที่ลง Adobe Flash CS3 เอาไว้สามารถเข้าไปดูใน Help ได้ครับจะอยู่ที่

+ ActionScript 3.0 Language and Components Reference
+ Apendixes
- ActionScript 2.0 Migration

คราวต่อไปมาเริ่มเขียน AS3 กันเลยดีกว่าครับ
edit @ 2007/05/16 13:38:32

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