Where to go from here
There are many learning resources available to help get you started. The following articles contain valuable information for learning ActionScript 3.0:
- ActionScript 3.0 overview discusses the goals and features of the language, as well as describing ECMAScript for XML (E4X) and Flash Player API features.
- Emmy Huang of the Flash Player team compiled some tips and common issues you might encounter during development to help ease your transition to ActionScript 3.0.
- To get more articles and online resources, be sure to check out the ActionScript 3.0 section of the ActionScript Technology Center.
- I also highly recommend Learning ActionScript 3.0. It is a great book for beginners who are learning the new language. You can review three chapters of the book on the Adobe Developer Connection.
- For more advanced coders, Colin Moock's book Essential ActionScript 3.0 is largely considered the bible of ActionScript 3.0 development. You can review two chapters of Colin's book on the Adobe Developer Connection as well.
- If you prefer to learn by watching videos, there are many resources available. Lynda.com is a great place to learn about ActionScript 3.0. In particular, ActionScript 3.0 in Flash CS3 Professional is a great introduction to the language. I also run a free video tutorial site (gotoandlearn.com) that has a large number of tutorials featuring ActionScript 3.0.
ActionScript 3.0 là một ngôn ngữ lập trình hướng đối tượng là một bước tiến quan trong trong quá trình phát triển tính năng của Flash Player runtime. Động lực thúc đẩy ActionScript 3.0 là tạo ra một ngôn ngữ lý tưởng thích hợp cho quá trình phát triển nhanh các ứng dụng Internet phòng phú, trở nên phần thiết yếu trong các trải nghiệm web.
Các phiên bản sớm của ActionScript cung cấp sức mạnh và sự linh hoạt cần thiết để tạo ra những trải nghiệm trực tuyến hấp dẫn. Action Script 3.0 giờ là một ngôn ngữ ưu việt hơn nữa, đem lại hiệu năng tuyệt hảo và rất dễ dàng để phát triển những ứng dụng với độ phức tạp cao, cơ sở dữ liệu lớn và hướng đối tượng, trên cơ sở tái sử dụng mã lệnh. Với ActionScript 3.0, nhà phát triển ứng dụng có thể đạt được năng suất và hiệu quả tuyệt vời với những nội dung và ứng dụng trên nền tảng Flash Player.
ActionScript 3.0 dựa trên cơ sở ECMAScript, tiêu chuẩn quốc tế cho ngôn ngữ lập trình kịch bản. ActionScript 3.0 là tương hợp với chỉ tiêu kỹ thuật của ngôn ngữ ECMAScript, thế hệ thứ ba Edition (ECMA-262). Ngôn ngữ cũng bao gồm các tính năng dựa vào công việc đang diễn ra trên ECMAScript Edition 4, xuất hiện bên trongtiêu chuẩn ECMA.
ActionScript được thực hiện bởi máy ảo ActionScript (AVM) được xây dựng trong Flash Player. AVM1, máy ảo được sử dụng để thực thi mã ActionScript hợp lệ, giúp sức cho trình Flash Player ngày nay có thể áp dụng với vô số kiểu ứng dụng tương tác đa phương tiện và ứng dụng Internet phong phú.
Tuy nhiên, quá trình phát triển AVM1 đã đến giới hạn của nó, giờ đây nhu cầu của các nhà phát triển đòi hỏi một bước đột phá lớn. ActionScript 3.0 ra mắt với một máy ảo mới tối ưu hóa cao. Máy ảo ActionScript, AVM2, với hiệu năng vượt xa AVM1. Do đó mã thực thi của ActionScript nhanh gấp 10 lần so với mã ActionScript tiền nhiệm.
Máy ảo AVM2 tích hợp sẵn trong Flash Player 9, và sẽ được là máy ảo chủ yếu chạy mã ActionScript trong tương lai. Phiên bản cũ AVM1 vẫn tiếp tục được hỗ trợ bởi Flash Player để tương thích với nội dung đã có.
Có rất nhiều công cụ tạo ra các sản phẩm và ứng dụng hướng tới Flash Player runtime. Những sản phẩm này thường kết hợp việc hỗ trợ ActionScript để bổ sung các tương tác và tính chất cho các sản phẩm đó. Trong họ sản phẩm của Adobe, các nhà phát triển và thiết kế chuyên nghiệp có thể sử dụng ActionScript trong nhiều công cụ và máy chủ như Flash, Flex, và Flash Media Server để tạo các ứng dụng, nội dung cho Flash Player. Trong họ sản phẩm Flex kể cả công cụ mới Eclipse IDE Flex Builder 2, sẽ là dòng sản phẩm đầu tiên truy nhập vào những tính năng mới của ActionScript 3.0.
Mục tiêu của ActionScript 3.0
Adbe muốn ActionScript 3.0 đem lại một mô hình lập trình được cải tiến phù hợp, tương thích với chuẩn công nghiệp, đem lại một hiệu năng lớn hơn so với những gì từng có trước đây. Mặc dù ActionScript 3.0 đại diện cho một mô hình lập trình runtime mới, nó vẫn rất quen thuộc với nhà phát triển có kiến thức lập trình hướng đối tượng cơ sở.
ActionScript 3.0 ra đời nhằm giải quyết những mục tiêu sau:
- An toàn: Ngôn ngữ hỗ trợ kiểu an toàn để nhà phát triển có thể viết code rõ ràng, dễ dàng bảo dưỡng mã đã viết.
- Đơn giản: Ngôn ngữ đủ trực quan để nhà phát triển có thể đọc và viết chương trình không cần thường xuyên tham vấn tài liệu
- Hiệu năng: Ngôn ngữ cho phép nhà phát triển viết những mã chương trình phức tạp có thể thực hiện hiệu quả và đáp ứng.
- Tương thích: Ngôn ngữ cung cấp khả năng tương thích ngược và tương thích chuẩn công nghiệp. ActionScript 3.0 là phương ngữ của ECMAScript chính thức hóa các tính năng của ActionScript 2.0 và bổ sung khả năng của ECMAScript cho XML (E4X) và thống nhất ngôn ngữ một cách mạch lạc.
Tính năng của ActionScript 3.0
ActionScript 3.0 gồm 2 phần : phần lõi ngôn ngữ và các Flash Player API. Phần lõi ngôn ngữ định nghĩa các khối xây cơ sở của ngôn ngữ lập trình như các mệnh đề, biểu thức, điều kiện, vòng lặp, kiểu dữ liệu. Flash Player API tạo thành từ các lớp đại diện cung cấp khả năng truy cập vào các chức năng cụ thể của Flash Player.
ActionScript 3.0 gồm các tính năng mạnh mẽ giúp tăng tốc quá trình phát triển ứng dụng. Các biểu thức thường sử dụng cho phép nhiều phép toán xử lý văn bản mạnh. ECMAScript với XML (E4X) chuyển đổi XML thành kiểu dữ liệu bản địa, đơn giản hóa đáng kể quá trình xử lý XML. Danh sách các API trình diễn giúp làm việc với các đối tượng trực quan dễ dàng và nhất quán. Chuẩn hóa mô hình sự kiện DOM gắn kết cách các đối tượng nói chuyện và đáp ứng với nhau trong thời gian chạy (runtime). Đây chỉ là một số trong các khả năng mới mà ActionScript 3.0 đem lại.
Các ngoại lệ thời gian chạy (Runtime exceptions) Trong ActionScript 2.0, nhiều lỗi thời gian chạy sẽ không được cảnh báo. Điều này giúp cho Flash Player không hiển thị những thông báo lỗi khó giải thích, mà JavaScript thường xuất hiện trong cửa sổ trình duyệt trước đây. Mặt khác, thiếu các thông báo lỗi kiểu này làm việc gỡ lỗi khó khăn hơn trong ActionScript.
ActionScript 3.0 giới thiệu rất nhiệu ngoại lệ thời gian chạy cho các lỗi điều kiện phổ biến, cải thiện khả năng gỡ lỗi chương trình và cho phép các ứng dụng quản lý lỗi mạnh hơn. Lỗi thời gian chạy có thể cung cấp các dấu vết cùng chú thích theo dõi với file nguồn, thông tin số dòng, giúp xác định lỗi nhanh chóng hơn.
Kiểu thời gian chạy (Runtime types)
Trong ActionScript 2.0, kiểu chú giải là ưu tiên cho mục đích trợ giúp nhà phát triển; trong thời gian chạy, mọi giá trị được đặt kiểu động.
Trong ActionScript 3.0, thông tin kiểu được bảo quản trong thời gian chạy và sử dụng cho một số mục đích. Flash Player thực hiện kiểm tra kiểu thời gian chạy, cải thiện an toàn kiểu của toàn hệ thống. Thông tin kiểu cũng được dùng để biểu diễn các biến trong biểu diễn bản địa, cải thiện hiệu năng và giảm tiêu thụ bộ nhớ.
Các lớp niêm phong (Sealed classes)
ActionScript 3.0 giới thiệu khái niệm lớp niêm phong. Lớp niêm phong sở hữu chỉ tập các tính chất và phương pháp cố định mà được định nghĩa vào thời gian biên dịch; các tính chất và phương thức bổ sung không thể thêm vào được. Tính năng này giúp cho việc kiểm tra thời gian biên dịch chặt chẽ hơn, tạo ra những chương trình mạnh hơn. Tính năng này cũng giúp cải thiện sử dụng bộ nhớ vì không yêu cầu một bảng hast nội tại với mỗi bản sao đối tượng (internal hash table). Các lớp động có thể sử dụng các từ khóa động.
Phương pháp đóng (Method closures)
Quản lý sự kiện đơn giản hơn trong ActionScript 3.0 nhờ phương pháp đóng, với đại diện sự kiện dựng sẵn. Trong ActionScript 2.0, một phương pháp đóng không nhớ bản sao đối tượng nó được dẫn xuất dẫn đến những hành vi không mong muốn khi gọi phương pháp đóng. Lớp mx.utils.Delegate là một giảỉ pháp thay thế phổ biến; để dùng nó, người ta hay dùng đoạn mã lệnh dưới đây:
myButton.addEventListener("click", Delegate.create(this, someMethod)); Delegate.create(this, someMethod)
Trong ActionScript 3.0 lớp này không còn cần thiết nữa vì trong ActionScript 3.0, một phương thức đóng clossure khi someMethod được gọi đến. Phương thức đóng này sẽ tự động nhớ bản sao đối tượng ban đầu của nó. Giờ đây chỉ cần viết
myButton.addEventListener("click", someMethod);
ECMAScript với XML (E4X)
Các đặc tính của ActionScript 3.0 thực hiện đầy đủ ECMAScript với XML (E4X), các chuẩn hóa ECMA-357 gần đây. E4X cung cấp tập chỉ thị ngôn ngữ tự nhiên, chính xác dễ dàng thao tác với XML. Không như các API cú pháp xử lý XML truyền thống, E4X khiến cho XML cảm nhận như một kiểu dữ liệu gốc của ngôn ngữ. E4X giúp quá trình phát triển ứng dụng có xử lý XML giảm số lượng mã lệnh cần thiết.
Biểu thức thường dùng (Regular expressions)
ActionScript3.0 cung cấp các biểu thức thường dùng để bạn có thể nhanh chóng tìm kiếm và thao tác với chuỗi. ActionScript 3.0 thực hiện những biểu thức thường dùng định nghĩa trong mô tả ngôn ngữ ECMAScript(ECMA-262)
Không gian tên (Namespaces)Không gian tên là một cơ cấu sáng tạo mới để kiểm soát các khai báo nhìn thấy. Tương tự với khai báo truyền thống dùng để điều khiển các khai báo (công cộng, riêng tư, bảo vệ), không gian tên là khai báo truy cập phong tục thiết yếu , có tên lựa chọn của bạn. Trong Flex, ví dụ dùng không gian tên anmx_internal với các dữ liệu nội bộ. Không gian tên cung cấp với một URI để tránh xung đột và cũng dùng để biểu diễn không gian tên XML khi làm việc với E4X.
Kiểu dữ liệu sơ khai gốc mới (New primitive types)
ActionScript 2.0 có kiểu dữ liệu số đơn, Number, một kiểu số dấu phẩy động kép. Đến với ActionScript 3.0 có kiểu dữ liệu int mới là số nguyên có dấu 32 bít cho phép mã ActionScript 3.0 tính toán số nguyên nhanh hơn nhờ ưu thế xử lý của các CPU. Kiểu dữ liệu nguyên int là rất phụ hợp với các bộ đếm vòng lặp, và nhiều ứng dụng khác. Kiểu nguyên không dấu uint cũng tương tự như kiểu nguyên.
Các tính năng Flash Player API
Flash Player API là tập các lớp và hàm bộc lộ khả năng của Flash Player với ngôn ngữ ActionScript Các hàm này là cầu nối giữa lõi ngôn ngữ ActionScript và toàn thể nền tảng. Đây là nguồn của nhiều ứng dụng đầy sức mạng và bổ sung rất quan trong với ngôn ngữ lõi. Mặc dù không trình bầy chi tiết ở đây, dưới đây là một vài tính năng mới thú vị đối nhà phát triển Flash.
Mô hình sự kiện DOM3Mô hình sự kiện cung cấp một cách chuẩn hóa để tạo ra và quản lý các thông điệp sự kiện để các đối tượng trong ứng dụng có thể tương tác và giao tiếp với nhau, duy trì trạng thái và đáp ứng với các thay đổi. Đặc tả W3C DOM3, mô hình này đem lại một cơ cấu rõ ràng hiệu quả hơn hệ thống sự kiện đã có trong các phiên bản trước của ActionScript. Khung ứng dụng Flex dùng cùng mô hình sự kiện như Flash Player API vì vậy hệ thống sự kiện là thống nhất qua các nền tảng từ trên xuống dưới.
Danh mục hiển thị API Danh sách hiển thị API gồm tập các lớp sửa lại để làm việc với các hình ảnh nguyên thủy trong Flash. Lớp Sprite mới là lớp xây dựng nhẹ, tương tự MovieClip nhưng phù hợp để làm lớp cơ sở cho các thành phần UI. Lớp mới Shapeclass biểu diễn các hình dạng vector thô. Những lớp này có thể khởi tạo tự nhiên với các toán hạng new và có thể cấp phát động lại bất kỳ lúc nào.
Không còn cần phải gán số biểu diễn độ sâu với danh sách các đối tượng hiển thị. Quản lý chiều sâu được tự động và dựng sẵn trong Flash Player. Phương thức mới cung cấp để xác định và quản lý thứ tự - Z của các đối tượng.
5 Lợi ích của việc sử dụng ActionScript 3.0 - Hiệu năng lớn hơn
ActionScript 3 được viết ngay từ đầu với ý tưởng về hiệu năng. Phụ thuộc vào nội dung, bạn có thể thấy sự tăng đáng kể về hiệu năng. Điều này nghĩa là nội dung đã có của bạn có thể chạy trơn tru hơn, nội dung mới viết có thể làm được nhiều điều hơn trong khi vẫn sử dụng cùng một lượng tài nguyên CPU
- Tận dụng các API mới của Flash Player
Adobe Flash Player 9 và 10 với vô số các đặc tuyến mới chỉ dùng được với ActionScript 3.0. Những đặc tính này gồm các XML API dễ dàng hơn qua E4X, danh sách hiển thị các thao tác tiên tiến hơn, cũng như thao tác hình ảnh cao cấp với các bộ lọc Pixel Bender. Như quy luật chung, các đặc tính mới của ActionScript trong tương lai chỉ có thể với ActionScript 3.0
- Tận dụng các thư viện cộng đồng và API
Trong số các thư viện chủ yếu mới công bố bởi cộng động dựng sẵn với ActionScript 3.0, và mọi thứ từ thư viện động cơ hoạt hình 3D Papervision3D vào thư viện hoạt hình Grant Skinner’s Gtween
- Khắc phục các mã lỗi dễ hơn
Trình biên dịch ActionScript 30 cung cấp phương án kiểm tra lỗi nghiêm ngặt hơn, giúp việc tìm và sửa lỗi dễ dàng hơn trước khi chạy nội dung. Khi tìm lỗi, có thể sử dụng một vài đặc tính gỡ lỗi mạnh mới để theo dõi chúng (vẫn có thể dùng trace() ).
- Phát triển nội dung đa nền tảng
ActionScript 3 là ngôn ngữ chuẩn để sử dụng qua các nền tảng Adobe Flash. Hướng tới đây là ngôn ngữ mà Adobe sẽ tập trung hỗ trợ trong các trình player (kiểu như Adobe AIR), máy chủ, và các dòng sản phẩm đã có và sẽ c. Flash Player 10 hỗ trợ ActionScript 3.0, và là yêu cầu để phát triển cho các nội dung Adobe Flex và Adobe AI. Trong tương lai, bạn có thể trông đơi những sản phẩm, dịch vụ thời gian chạy trên nền tảng FLash mới từ Adobe sẽ vẫn sử dụng ActionScript 3.0
Mẹo học ActionScript 3.0
ActionScript 3.0 là một ngôn ngữ hướng đối tượng đầy sức mạnh tiêu biểu cho một mô hình lập trình mới của Flash Player runtime. Nếu đã quen với ActionScript 1.0 hoặc 2.0, có một vài khác biệt về mặt ngôn ngữ khi phát triển chương trình với ActionScript 3.0 cần lưu ý.
Lưu ý: Tham khảo sự khác biệt của ActionScript 2.0 và ActionScript 3.0 trong Flex 2.0 Language Reference.
Để việc chuyển sang ActionScript 3.0 được dễ dàng, dưới đây là một danh sách các thủ thuật và tình huống lỗi thường gặp trong quá trình phát triển ứng dụng
- Khai báo kiểu cho tất cả các biến, tham số và giá trị trả về. Mặc dù điều này không bắt buộc, nhưng nên khai báo tất cả các biến, tham số và giá trị trả về cùng kiểu, trình biên dịch sẽ đưa ra những thông báo lỗi hữu ích hơn. Tốc độ thực hiện chương trình cũng nhanh hơn vì máy ảo biết trước kiểu biến đang sử dụng.
- Lưu ý những khai báo với không có chỉ thị truy nhập giờ đât mặc định là
package internal
, chứ không phải là public
nữa. > Khai báo chỉ thị truy cập mặc định giờ đây là internal
thay vì public
, nghĩa là khai báo chỉ có thể nhìn thấy với gói chứa khai báo, không phải mọi mã lệnh khác.
- Note that declarations with no access specifier now default to
package internal
, not public
. The default access specifier for declarations is now internal
instead of public
, meaning that the definition is visible only to the package containing the definition, not to all code. This is consistent with other languages such as Java. Because ActionScript 2.0 declarations defaulted to public
, this change will likely be a common pitfall, so always put an access specifier on your declarations to make the intent crystal-clear. To encourage this best practice, the ActionScript 3.0 compiler will output a warning when no access specifier is used. - Note that classes are sealed by default, meaning properties cannot be added dynamically at runtime. Classes can now be either dynamic or sealed. Dynamic classes can add additional dynamic properties at runtime; sealed classes cannot. Sealed classes conserve memory because no internal hash table is needed to store dynamic properties, and the compiler can provide better error feedback. The declaration
class Foo
is sealed. To declare a class dynamic, use the dynamic
keyword—for example, dynamic class Foo
. - Use
package
declarations to put a class definition into a package. The package
keyword is new to ActionScript 3.0.ActionScript 2.0 code:
class mx.controls.Button { ... }
package mx.controls { class Button { .. } }
As in ActionScript 2.0, a public
class must be in a file with the same name as the class. Multiple classes may be declared in a single file, but only one class may be public, and its name must match the filename.
- Import classes, even if references to the class are fully qualified. To use a class
MyPackage.MyClass
, you must import it with:
import MyPackage.MyClass;
This is true even if all references are fully qualified, that is using the full name MyPackage.MyClass
. In ActionScript 3.0, the import
statement indicates that you want to use a class definition from another package, whereas in ActionScript 2.0 it was only used to create shorthand names. In ActionScript 3.0, the full class name is only used for disambiguation, and is no longer a substitute for the import
statement.
It is also possible to import all of the definitions in a package using the * wildcard character:
It is considered best practice to import definitions individually, because it results in less ambiguity about which definitions your code uses.
- Always mark method overrides. The
override
keyword helps avoid common pitfalls of overriding methods, such as specifying the wrong name or method signature for an overridden method, or when the name of the overridden method changes. It also makes it clear when looking at the code that a method is being overridden. Because it knows whether a method is intended to override
another, the compiler can perform more useful validation. The override
keyword in ActionScript 3.0 is inspired by the C# override
keyword. - Declare return types in your functions. It is considered best practice to declare a return type for a function. If you omit a return type, a warning will be displayed. This is done for type safety, so that you don't accidentally leave a return type off and get the default return type of Object. If a function doesn't return any value, declare its return type as
void
. - Note that delegates are now built into the language, making event dispatching easier. In ActionScript 2.0, routing an event to a method required use of the
mx.utils.Delegate
class or other workarounds:
import mx.utils.Delegate; myButton.addEventListener("click", Delegate.create(this, onClick));
In ActionScript 3.0, a reference to a method automatically remembers the object instance from which it was extracted. This is called a method closure. In essence, it is an automatic delegate. So, the code can simply be written as:
myButton.addEventListener("click", onClick);
- Note that dereferencing a null or undefined reference will now throw an exception. Dereferencing null or undefined in legacy ActionScript was ignored and evaluated to undefined. Now, a TypeError exception will be thrown. Watch out for code that casually dereferenced null or undefined, and depended on the silent failure behavior. The new exception-throwing behavior is compliant with the ECMAScript specification.
- Use the
-verbose-stacktraces
and -debug
options. Compiling with the command-line options -verbose-stacktraces
and -debug
causes filenames and line numbers to appear in the Flash Player runtime alerts. When a runtime error occurs, a dialog box describes the error and lists the call stack where it occurred. Using the -verbose-stacktraces
and -debug
options can make it easier to locate the source of an error in your code. - Explicitly declare properties to be bindable. Properties are no longer bindable by default. You must declare them to be bindable by using the
[Bindable]
metadata tag. - Note that the Flash Player API has been reorganized into packages. Formerly all classes and functions in the Flash Player API were global. Now there are many packages such as flash.display, flash.events, flash.ui, and so on. For example, MovieClip is now
flash.display.MovieClip
and getTimer
and setInterval
have been moved to the flash.utils package. - Use the new Timer class instead of setInterval/setTimeout. The new
Timer
class provides a cleaner mechanism for timer events than the setInterval
and setTimeout
functions. The new Timer
class has a number of advantages over setInterval
, such as not having to deal with interval ID numbers, and a more modern, object-oriented interface. We regard using Timer
instead of setInterval
and setTimeout
as a best practice. - Be sure to subclass events. Events are now strongly typed, and must be subclasses of the new
Event
base class. The new Event
class makes the event system clearer and more efficient. However, this also means that you can no longer use a generic instance of class Object
when dispatching events, and you cannot use the object literal shorthand—for example, {type: 'customEvent' }
.Instead of creating a generic Object
class, you now need to use the Event
class (for example, dispatchEvent(new Event ('myCustomEventType'))
). You need to subclass Event
if you want to pass additional properties. The motivation for not using Object
is to achieve greater type safety and efficiency.
- Note that visual elements must extend
DisplayObject
, and you can define them like any other class. Components are now created dynamically with new and added to the display list using addChild
. As a result, createChild
has been deprecated. Visual entities, including TextField
, can be instantiated like any other object and simply added to a display list using addChild
or addChildAt
. Note that this means certain APIs are gone, such as createEmptyMovieClip
and createTextField
. In order to create a new TextField
you use new TextField
instead of createTextField
. - Note that E4X (ECMAScript for XML) is now the recommended means of manipulating XML in Flash. E4X is far more powerful and better integrated into the language than the legacy Flash XML class, and provides a host of new capabilities. The legacy Flash XML class is still available for use. If you prefer the legacy XML API, renamed to XMLDocument, it is still available in the flash.xml package.
- Use the
toXMLString
method when using E4X. The toString
method does not necessarily return the complete XML markup for the object; to get that, use the toXMLString
method. The toString
method returns a convenient string value for the XML object. It does not necessarily serialize the XML object in its entirety. To get the XML markup, call the toXMLString
method. - Note that the
for...in
loop will no longer enumerate properties and methods declared by a class. It only enumerates dynamic properties of an object. ActionScript 3.0 features a new and more advanced mechanism for object introspection, called describeType
. Use it to introspect objects in ActionScript 3.0. - Note that the root object of a SWF file can now be an instance of a custom class of your choice. In ActionScript 2.0, the root object of a SWF file was always of class
MovieClip
. In ActionScript 3.0, it may be any subclass of Sprite. You can set a class definition to be the DocumentRoot
of a SWF file. When it's loaded, the SWF file will instantiate that class to serve as its root object.
Special thanks go out to our developer community for helping suggest entries for this article. The list presented here is by no means exhaustive, but it's a start that will help you hit the ground running with ActionScript 3.0. If you are familiar with other object-oriented languages, you may find these tips little more than a refresher—skills you've learned elsewhere can immediately be put to use in ActionScript 3.0.
If you are new to object-oriented programming and ActionScript 3.0, then these tips will come in handy. For you, this is definitely a list to pin up in plain sight. Happy coding!
http://help.adobe.com/en_US/flash/cs/using/index.htmlhttp://help.adobe.com/en_US/as3/dev/index.html