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 ต่างๆ

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

(เด๋วจะกลับไปปรับ Introduct to Flex 2.0 อิๆ )
#1 By หมาเขียว on 2007-06-07 13:24