Flash ActionScript 3 overview
This article or section is currently under construction
In principle, someone is working on it and there should be a better version in a not so distant future.
If you want to modify this page, please discuss it with the person working on it (see the "history")
<pageby nominor="false" comments="false"/>
Disclaimer: Until today I have never seen any ActionScript code. I will use this page to write down a few things. Wait until this message goes away before you can trust anything ! - Daniel K. Schneider 15:56, 5 September 2007 (MEST). Some links (there are mostly just links in here) may be useful though.
This is part of the Flash series of articles. But it is not a tutorial !!
Introduction - Writing and using AS Code
“ActionScript 3.0 is a dialect of ECMAScript which formalizes the features of ActionScript 2.0, adds the capabilities of ECMAScript for XML (E4X), and unifies the language into a coherent whole.” (Grossman, 2006).
Basically, there are different ways of using ActionScript 3:
1. Within a Flash CS3 environment:
- Use the Flash CS3 environment more less as "in the ActionScript 2" way, i.e. you add bits of code to certain frames
- Write action code with a class structure in a file, then import to a frame through the properties panel.
- Write your code in a file and compile it (you also may use Flash CS3 that way). No drawings, just code !
2. Within an Adobe Flex environment: Flex is a framework introduced by Adobe that also compiles into swf files. Flex is meant to make it easier to conceive rich Internet applications that contain a variety of interactive interface elements (buttons, textfields, lists of images, etc.). The Flex SDK is free to use but lives in a command line environment. Flex Builder provides a visual development environment. It is due to become free for students and educators starting early November.
- Use the actionscript compiler bundled in the Flex framework to compile AS3 files. This is explained in details in Sernocular's Beginner Guide to Getting Started with AS3 (Without Learning Flex). It explains how to use any editor plus the mxmlc compiler.
- Write a Minimal MXML application that contains little else than a call to a main function. An example of this can be found in Minimal MXML example by Moock.
- Write a Flex/MXML document that includes a script element. The use of actionscript within a <mx:Script> tag is explained in the Flex Language Reference or this blog post on Using ActionScript in Flex applications
Using ActionScript like a Flash Designer
- Create a new layer
- Click on a frame (typically frame 1)
- Hit F9, the copy/paste or write your code
This is the way most of the Flash examples made in our tutorials were made
Scripting in the timeline does not require from you to use classes. However, sometimes you need to import packages, i.e. when Flash whines that it can't find a method. Examples are:
import Fl.managers.FocusManager; // to work with keypress events import fl.video.MetadataEvent; // to work with cue points in flv videos
Using ActionScript classes in CS3
Most examples in the official Using ActionScript 3.0 Components and ActionScript 3.0 Language and Components Reference are made with a class structure and require that you learn this (read also Using examples in the ActionScript 3.0 Language Reference):
- Write code in a AS file and give the file the same name as the primary class (for example: ContextMenuExample.as).
- Create and save a new empty FLA file in the same directory as the AS file.
- In the Properties tab of the Property inspector enter the class name of the primary class for the example in the Document class text box (for example: ContextMenuExample).
- Save your changes to the FLA file.
Note for Flash designers: Some of the code in the Flash doc can be fairly easily simplified to work with the simple timeline scripting method. Other can not and you do have to code with a "class structure".
Stand-alone code development with AS 3
You do not need to buy Flash CS3 (that's actually a cool thing) to program in AS3 and to create *.swf files. You can either use:
- Flex Builder - an Eclipse plugin
- Just the Flex SDK
- The Flex SDK 2.0.1 (or better) from Adobe
- Download this free SDK from Adobe:
For Windows and Mac there is a Flex Builder plugin for Eclipse. Otherwise there is a platform independent compiler, the Adobe Flex2 Software Development Kit (SDK).
- Installing the Adobe Flex2 Software Development Kit (SDK) for Windows
- Unzip it somewhere
- Edit the Environment variables through the configuration panel to include the bin directory in the path: I.e. something like Parameters->Config Panel->System->Advanced (I don't have an English System at hand).
- Installing the Adobe Flex2 Software Development Kit (SDK) for Ubuntu
- Unzip it somewhere (I put it under /usr/local/flex)
- Under Linux change permissions of the shell scripts in the bin directory, in particular mxmlc
- Then add this directory to your path. E.g. under my Ubuntu I added in file /etc/bash.bashrc:
export PATH=${PATH}:/usr/local/flex/bin
- Installing the Adobe Flex2 Software Development Kit (SDK) for Mac OSX
- Unzip it somewhere (I put it under /Applications/flex_sdk/flex_sdk2/)
- Open terminal, go to the flex_sdk directory. Make sure the files in the bin directory have the right permissions. Type "ls-al". File details should start with "-rwx". If no "x" appears, type "chmod u+x *" to give execution permission to all files in that directory.
- Then add this directory to your system paths. Go to your home directory ("cd $home"), edit the file (in the terminal window, type "open .profile" or "mate .profile" if you have textmate installed). Add the path to the file.
export PATH=$PATH:/Applications/flex_sdk/flex_sdk_2/bin/
Save the file. Then make sure the profile file is being initiated.
source .profile
If you have the TextMate code editing software installed, download the Flex and AS3 Bundles for TextMate.
- Using the compiler
- Just type something like:
mxmlc HelloWorld.as
.... This will make an *.swf file
- Development support other than Eclipse
I find these IDEs too hard to use (I only occasionally program and just use the Emacs editor and don't want learn full Flex yet). So I need some Emacs code for help with editing (not done yet)
If emacs appears too complex to master, a very easy to use editor in Unix/Linux environments is pico
The class hierarchy
At the origin, there is the Object. It has many subclasses (about 151 I'd say).
EventDispatcher
EventDispatcher implements is the base class for the DisplayObject class, i.e. all displayed objects. It is a direct child of Object and has 29 subclasses. A few are:
- DisplayObject (see below)
- NetStream NetStream (use to deal with streaming connections)
- Sound (use to load/play external sound)
- SoundChannel (control sound)
- Timer (use for time-based animation)
The DisplayObject
The ActionScript 3.0 flash.display package defines a whole lot of different kinds of visual objects that can appear in the Flash Player. DisplayObject is a child of EventDispatcher, child of Object
Below is summary table of ActionScript 3 interactive display objects. It shows that interactive objects are defined as hierarchical classes. Methods and properties that work for a parent class (e.g. Sprite) also will work for its child classes (e.g. UIComponent). Links point to the technical reference manual at Adobe.
- DisplayObject, see also Core display classes overview.
- InteractiveObject (base class for all interactive objects)
- DisplayObjectContainer
- Loader: Class for loading objects (Bitmaps, AS3 Sprites or Movieclips, or AS 1/2 AVM1Movie).
- Sprite: Manipulable container of objects
- FLVPlayback FLVPlayback]
- FLVPlaybackCaptioning
- MovieClip: refers to a movie clip symbol created in the Flash authoring tool.
- UIComponent
- Stage
- SimpleButton
- TextField
- DisplayObjectContainer
- AVM1Movie
- Bitmap: for displaying a bitmap image
- MorphShape:
- Shape: on-screen canvas for drawing content
- StaticText: Frozen text
- Video: contains video
- InteractiveObject (base class for all interactive objects)
Events
The Event class is used as the base class for the creation of Event objects, which are passed as parameters to event listeners when an event occurs. Event is a direct child of the object. There are 26 direct subclasses and Flex has even more. We only will show a few here.
- Event
- ComponentEvent (UIComponent class related)
- KeyboardEvent (user presses key)
- MetadataEve (cue points and user metadata requests)
- MotionEvent (related to fl.motion.Animator class)
- MouseEvent (user does something with the mouse)
- SliderEvent (related to the UI Slider component)
- TimerEvent (related to Timer class)
- VideoEvent (when the user plays a video)
Interfaces:
- IVPEvent (related to the FLV component)
When Flash executes
The display list
At at given time in your animation, your Flash application contains a hierarchy of displayed objects: the display list. It contains all the visible elements and they fall in one of the following categories:
- The stage: Each application has one stage object and it contains all on-screen display objects (i.e. containers or simple objects). This includes objects that the user can't see (e.g. ones that are outside of the stage).
- Display object containers, i.e. objects that can contain both simple display objects and other display object containers.
- (Simple) display objects
Stage and Timeline
“To summarize: one stage, one root per SWF (which is the main timeline) and that root is an instance of a document class or the MainTimeline class if a document class isn't provided”
AS 3 coding notes
(I will kill this section later ... i.e. once I got some tutorials with code inside)
Event handling
- General pattern
Definition of an event handler function:
function eventResponse (eventObject:EventType):void { // Actions performed in response to the event go here. }
Using it:
eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);
- Example
launch_button.addEventListener(MouseEvent.CLICK,launchRocket); function launchRocket(event:MouseEvent):void { gotoAndPlay(2); }
See ActionScript 3 event handling tutorial. You also can see an example in the Flash button tutorial
Documentation Links
See also Adobe Flex
Reference manuals
- ActionScript 3.0 Language & Component Reference
- Adobe Flex 2.0.1 Language Reference
- Flex 2 LiveDocs: Programming ActionScript 3.0
Other documentation
- Adobe Livedocs has fairly good documentation (maybe not suitable for beinners) e.g.
- ActionScript 3 from Adobelabs. Maybe superseded by the above doc, maybe not ...
- ActionScriptCheatSheet.com Look at the downloads. Several excellent ActionScript cheatsheets.
AS2 vs. AS3 comparisons
- Understanding the changes in the display API in ActionScript 3.0 (short example code comparison)
- ActionScript 2.0 Migration (Adobe). This list list is huge :)
Overviews
- Grossman, Gary and Huang, Emmy (2006). ActionScript 3.0 overview, Adobe.
- ActionScript (Wikipedia)
- Comparing the syntax of Java 5 and ActionScript 3
Tutorials
General AS 3 Tutorials
- Adobe's Developer Center includes many "quickstart" articles but also more substantial tutorials and finally book excerpts. Examples:
- Filtering XML data in Flash applications using ECMAScript for XML
- Filtering and formatting data in the DataGrid component
- ActionScript and object-oriented programming (several good tutorials at Adobe's Flash Developer Center)
- ActionScript 3.0 Cookbook excerpts: From custom classes to the rendering model (Several free chapters of this book)
- Migrating your Flash applications to ActionScript 3.0
- Tutorials at ActionScript.org has several action script tutorials, e.g.
- Flepstudio has a series of tutorials.
- Flash-db.com has a series of tutorials.
Component programming
(to sort out)
- AS3 Mouse Events and Mouse Related User Actions by Drawk - Really useful.
- Quick Tips for Making ActionScript 3 Components by Ben Stucki.
- ActionScript 3.0 Forums at Kirupa.com. Also includes [ ActionScript 3 Tip of the Day]
- Animating Dynamic MovieClips in AS3 by Kirupa.
- Eric Cancil. A blog with AS3 code.
- $.console A console for debuggin, pops up over your application (looks good, not tested so far).
AS 3 Example-based tutorials
- Flash Tutorial - Copy Motion as ActionScript 3.0
- Metah.ch has a series of tutorials with source code.
AS 3 Examples
- Flex Treemap Component
- Updated: List of Best Animation Packages for AS3
- On user-triggered and user-controlled interface animation
Reusable components and libraries
- Tweener Tweener (caurina.transitions.Tweener) is a Class used to create tweenings and other transitions via ActionScript code for projects built on the Flash platform.
- TweenLite. TweenLite (AS3) - A Lightweight (2K) Yet Powerful Tweening Engine.
- TweenFilterLite. TweenFilterLite extends the extremely lightweight (2k), powerful TweenLite "core" class, adding the ability to tween filters (like blurs, glows, drop shadows, bevels, etc.) as well as image effects like contrast, colorization, brightness, saturation, hue, and threshold (combined size: 5k).
- WebORB for PHP (should be move to Flex). erver-side technology enabling connectivity between Flex and Flash Remoting clients and PHP applications.
Other
Development environments
- Flash/ActionScript3 Programming under Ubuntu ... Tested, this works :)
Blogs and stuff
- Tag: Actionscript3 at Wordpress
- Drawk's blog Publishes also source and a good tweener library.
- WS-Blog by Jens Krause.