Chronological Development of ActionScript 3


#1

There used to be a time when ActionScript first came out that there were LOTS of tutorials about it and every new bits in every new version was talked about, and for some reason, it all went silent since a specific date for some reason.

I wish to create here a list of the incremental improvements made to ActionScript 3 since its conception version by version.

I know very little, and people are probably going to say “just check the Flash Player release note you IDIOT !”, please understand that even Adobe themselves doesn’t really go into depth about it after a while, all their silent improvements…they swept under the rug for some reason…

I really love ActionScript and I want to re-live those exciting moments again.

I hope to build up this list in detail, overtime…just a hope, let’s go:

Flash 8:
The greatest version of legend Flash ever to many veterans and the final stamp of approval for ActionScript 2, this version solidify/finalized ActionScript 2, there will be no new ActionScript 2 improvements since.

Flash CS3 :: Flash Player 9.0.262.0:
The Birth of ActionScript 3 !
It all starts here for AS3 !

Flash CS4 :: Flash Player 10:
1: removeChildren() implemented.
Previously to do the same thing, you will have to do:
while (numChildren > 0)
{
removeChildAt(0);
}

2: Vectors Implemented.
Instead of:
var array_i: Array = [“Hello”, “World”];
You can now do:
var array_vector:Vector.<String> = new Vector.<String>();

Flash CS 5 :: Flash Player 11.0.2:
1: fl.display.ProLoader implemented.
Intended to replace Loader because it can better handle the loading of swf that contains TLF tech which Adobe later abandoned anyways.

2: isPlaying implemented.
This property is part of the MovieClip object, it can be use to check if a movieClip is currently playing or not.
Warning DON’T USE IT ! Even after all these years since the release of this API [It’s 2019 now], Adobe never fix this issue/bug that has been known more than 3 years ago !!!:
Unless you EXPLICITLY call the MovieClip’s play()/gotoAndPlay() function, isPlaying will ALWAYS return false EVEN IF/WHEN the MovieClip is actually playing as it will by default if not stop() code is implemented !

3: Native JSON support implemented.
Took until Flash CS5 to get this very important feature ! In the past people have to use other framework/libraries for it.

Flash CS 5.5 :: Flash Player 11.5.2:
1: loader.unloadAndStop() implemented.
Intended to replace unload() as it handles a number of stuff in the background that makes it easier for garbage collector to recognize the unloaded resource as “collectable”.

Flash CS 6:
1: ??? What’s new that is added to the ActionScript 3 language in this version ?


admin edit: added a category, to format your text use markdown syntax, see markdown cheatsheet


#2

if you want, but it is kind of already done

first, on wikipedia Adobe Flash Player - Release history
click the [show] at the right of “Adobe Flash Player version history”

you will then see an history of features from Macromedia Flash Player 2 to Adobe Flash Player 32

also the wikipedia page ActionScript - Timeline by ActionScript version
make a little summary of the different versions of actionscript

  • 2000–2004: ActionScript "1.0"
  • 2003–2006: ActionScript 2.0
  • 2006–today: ActionScript 3.0

second, what you really want is the AS3LCR
ActionScript 3.0 Language and Component Reference

under Appendixes the What’s New page

you will see the reference of what was added for the last version, here v32

also you can filter per API version, either AIR and/or Flash

but even without that, when you read the documentation
every single definitions contain a Runtime Versions to tell which minimum version is supported

by default you will see “AIR 1.0, Flash Player 9, Flash Lite 4”
let’s call that the AS3 minimum API, introduced with Flash Player 9 and AIR 1.0

but for new features added later you will see different versions, here few examples


System.totalMemory

the usual default “AIR 1.0, Flash Player 9, Flash Lite 4”


System.totalMemoryNumber

update from “Flash Player 10.1, AIR 2”


System.disposeXML()

updated from “Flash Player 10.1, AIR 1.5.2”


System.exit()

update from “AIR 1.0, Flash Player 9.0.115.0”

in short System.exit() was always available from “AIR 1.0”
but it was only available from “Flash Player 9.0.115.0”


And finally all those new features are listed here per version

Flash Player and Adobe AIR feature list

here the last few entries


Now if you need deeper insight on what was added you need to look at the release notes

Flash Player Release Notes - Adobe Help Center

Release notes directory for all versions of Adobe AIR


Now, even if the HTML that generate asdoc look a bit old and use frames, all those versioning things are not here by mistake and imho are quite efficient to know what is availabel for what version

from the examples above, they are defined using the [API] metadata in the source code

package flash.system
{
    
    public final class System
    {
        //...

        /**
         * The amount of memory (in bytes) currently ...
         * 
         * @langversion 3.0
         * @playerversion Flash 9
         * @playerversion AIR 1.0
         * 
         * @see System#freeMemory freeMemory
         */
        public static function get totalMemory():uint
        {
            return 0;
        }

        /**
         * The amount of memory (in bytes) currently ...
         *  
         * @langversion 3.0
         * @playerversion Flash 10.1
         * @playerversion AIR 2
         * 
         * @see System#freeMemory freeMemory
         */
        [API(CONFIG::FP_10_1,CONFIG::AIR_2_0)]
        public static function get totalMemoryNumber():Number
        {
            return 0;
        }

        /**
         * Makes the specified XML object immediately available for garbage collection.
         * 
         * @param node XML reference that should be made available for garbage collection.
         * 
         * @langversion 3.0
         * @playerversion Flash 10.1
         * @playerversion AIR 1.5.2
         */
        [API(CONFIG::FP_10_1,CONFIG::AIR_1_5_2)]
        public static function disposeXML( node:XML ):void
        {
            // ...
        }

        /**
         * Closes Flash Player.
         * 
         * @param code A value to pass to the operating system.
         *             Typically, if the process exits normally, the value is <code>0</code>.
         * 
         * @langversion 3.0
         * @playerversion Flash 9.0.115.0
         * @playerversion AIR 1.0
         * 
         * @see flash.desktop.NativeApplication#exit() flash.desktop.NativeApplication.exit()
         */
        public static function exit( code:uint ):void
        {
            // ...
        }

        //...
    }
}

see avmplus/core/api-versions.as

and the explanations avmplus/doc/apiversioning.txt

it works at the documentation level with asdoc, at the compilation level with the compilers asc, mxmlc, compc, and it works at the bytecode level

libraries like playerglobal.swc and airglobal.swc
contains ALL the versions of the API

but with your compiler when you use the option
-swf-version=43 to tell the compiler to target SWF version 43 (for Flash/AIR v32)

additionally you can also use this other option
-target-player=32 to tell the compiler you expect the runtime version 32 (either Flash or AIR)

that’s what you see every time in the release notes
for ex: Release Notes | Flash Player® 32 AIR® 32

from earlier notes

| SWF version     | Flash Player     | codename           | FP release      | AIR / AIR SDK     | AIR release     | Flex SDK     |
|:----------------|:-----------------|:-------------------|:----------------|:------------------|:----------------|:-------------|
| SWF9            | 9.0.0            | Moviestar          | 28/01/2008      | 1.0.0             | 25/02/2008      | 3.0.0        |
| SWF9            | 9.0.0            |                    |                 | 1.1.0             | ???             | 3.1.0        |
| SWF9            | 9.0.0            |                    |                 | 1.5.0             | ???             | 3.2.0        |
| SWF9            | 9.0.0            |                    |                 | 1.5.0             |                 | 3.3.0        |
| SWF9            | 9.0.0            |                    |                 | 1.5.2             | ???             | 3.4.0        |
| SWF9            | 9.0.0            |                    |                 | 1.5.3             | ???             | 3.5.0        |
| SWF9            | 9.0.0            |                    |                 | 1.5.3             |                 | 3.6.0        |
| SWF10           | 10.0.0           | Astro              | 15/10/2008      | 1.5.3             |                 | 4.0.0        |
| SWF10           | 10.0.0 / 10.1.0  | Gala?              | 16/08/2010      | 2.0.2             | 10/06/2010      | 4.1.0        |
| SWF11           | 10.2.0           | Square?            | 08/02/2011      | 2.6.0             | 22/03/2011?     | 4.5.0        |
| SWF11           | 10.2.0           | Spicy              |                 | 2.6.0             |                 | 4.5.1        |
| SWF12           | 10.3.0           | Wasabi             | 12/05/2011      | 2.7.0             | 14/06/2011      | n/a          |
| SWF13           | 11.0.0           | Serrano (Molehill) | 04/10/2011      | 3.0.0             | 04/10/2011      | n/a          |
| SWF14           | 11.1.0           | Anza               | 17/01/2012?     | 3.1.0             | 17/01/2012?     | 4.6.0        |
| SWF15           | 11.2.0           | Brannan            | 28/03/2012      | 3.2.0             | 28/03/2012      | n/a          |
| SWF16           | 11.3.0           | Cyril              | 08/06/2012      | 3.3.0             | 08/06/2012      | n/a          |
| SWF17           | 11.4.0           | Dolores            | 21/08/2012      | 3.4.0             | 21/08/2012      | n/a          |
| SWF18           | 11.5.0           | Ellis              | 26/11/2012      | 3.5.0             | 26/11/2012      | n/a          |
| SWF19           | 11.6.0           | Folsom             | 12/02/2013      | 3.6.0             | 12/02/2013      | n/a          |
| SWF20           | 11.7.0           | Geary              | 09/04/2013      | 3.7.0             | 09/04/2013      | n/a          |
| SWF21           | 11.8.0           | Harrison           | 09/07/2013      | 3.8.0             | 24/07/2013      | n/a          |
| SWF22           | 11.9.0           | Irving             | 08/10/2013      | 3.9.0             | 08/10/2013      | n/a          |
| SWF23           | 12.0.0           | Jones              | 14/01/2014      | 4.0.0             | 14/01/2014      | n/a          |
| SWF24           | 13.0.0           | King               | 08/04/2014      | 13.0.0            | 08/04/2014      | n/a          |
| SWF25           | 14.0.0           | Lombard            | 02/06/2014      | 14.0.0            | 02/06/2014      | n/a          |
| SWF26           | 15.0.0           | Market             | 09/09/2014      | 15.0.0            | 09/09/2014      | n/a          |
| SWF26           | 15.0.0.223       | Market             | 11/11/2014      | 15.0.0.356        | 11/11/2014      | n/a          |
| SWF27           | 16.0.0           | Natoma             | 09/12/2014      | 16.0.0            | 13/01/2015      | n/a          |
| SWF28           | 17.0.0           | Octavia            | 12/03/2015      | 17.0.0            | 12/03/2015      | n/a          |
| SWF29           | 18.0.0           | Presidio           | 09/06/2015      | 18.0.0            | 09/06/2015      | n/a          |
| SWF30           | 19.0.0           | Quint              | ???             | 19.0.0            | ???             | n/a          |

in short 3 periods

  • Flash player 2 to Flash Player 9
    the features are mainly driven by the Flash IDE which is in sync with the Flash Player
    see wikipedia for history of features
  • after Flash Player 9 till Flash Player 12
    the AS3 era, AIR is introduced, versioning of the API
    the features are driven by the runtime number mainly locked to the SWF version
  • from Flash Player 13 / AIR 13 till now
    same versions for Flash and AIR
    the features are mainly driven by the SWF version, runtime number is less important

In general I would say you need to assume that everything is available from Flash Player 9 / AIR 1.0

you just need a bit of history to know that Vector is only available from Flash Player 10
and read the runtime versions to know for which version a particular API is available.


#3

You…are…a…GOD !!!
Thank you !
I will be reading those like I am reading my childhood !!!

I will still update the list in a concise manner because it can be a fresh and easy read compare to the technical manual type.

But THANK YOU !!! I am so happy now !

Reading:
https://www.adobe.com/devnet/articles/flashplayer-air-feature-list.html
This is all I ever wanted, believe it or not I didn’t know this existed, I wish Adobe bring this to the front to show everyone how viable AS3 is ! Thank you !


#4

well… I had to study deep the versioning for redtamarin :slight_smile:


in short, the icons tell you for which runtime it is available either flash (everyone), AIR and/or Redtamarin


here we know those API are for AIR


here we know those API are for Redtamarin


redtamarin_API_version

we know the specific runtime version
we also have other cases here you will see “Windows only” or “Linux only” etc.


here a bit of simpler explanation of the API versioning


and in a not far future some books that might help

where yeah I had to talk a bit about the history


#5

Reading:
https://www.adobe.com/devnet/articles/flashplayer-air-feature-list.html
This is all I ever wanted, believe it or not I didn’t know this existed, I wish Adobe bring this to the front to show everyone how viable AS3 is ! Thank you !


#6

the simple goal of some open source books would be to make all that well organised by chapters

I’ll do a bit or as much as I can, and ideally a community effort could keep updating those books so everyone can profit from them.


#7

You are a hero, you are providing us with more than just a safe space, you are helping AS3 to grow !

I know NOTHING about RedTamarin at this point, the similarity between it and NodeJS which I use at work is compounding at this point for me, but I would be more than happy to dump Node and all that NPM shit [I HATE NPM!!! I Couldn’t wait for NPM to collapse so that the world will wake up to how dependent their tutorials and frameworks are on this company, yes NPM is a fucking company !!!] If I can use pure AS3, I will have to study this Red thing at a later time and dump that mother fucking Node and its bastard NPM !

Did I mention I hate NPM ?
Yes I hate NPM.


#8

euh cool with hate OK :slight_smile: ?

every platform/language/etc. have their pros and cons, their little quirk
one failing would not really mean another one is rising

but everyone is free to try to bring something “different” to the table
then people/dev/users will make their choice that’s fit best their needs

among those many different problems, Redtamarin try to do a bit like AIR but for
the command-line, let user easily write/distribute command-line tool that works cross-platform.


#9

So this Red thing, can it do what PHP do ?
Like say the usual send POST data and it can read that data echo it back [of course in this case it would be trace] a simple yes and no would suffice for now because I am just curious whether I can use this RedTamarin thing as PHP/Node replacement.

By the way if you and everyone helping you is successful, you would be saving the world !

I am just going to put it here:


#10

yes, it is as much capable than PHP, Python, Perl, Ruby, Java, Go, etc.

yes, see a web site build on Redtamarin 0.4.1 long time ago as a prototype
http://www.burrrn.com/

you can also read into the category #redtamarin in this forum


split this topic #11

A post was split to a new topic: MovieClip isPlaying bug


#12

Fantastic, informative thread. Thank you.


#13

Together, we will love ActionScript forever.