原典の「Actions」章を参照してください。

たとえば button over などの イベントハンドラ はどのようになっているのかというと， DefineButton2 チャンクに該当するイベント用の ACTIONCODE が含まれています *4 。

action model の変遷のまとめ

以下のように，だいたい3回の大変革がなされています。

SWF 3 単純なフレームアクション SWF 4 単純な演算が可能なスタックマシンとしての実装 SWF 5 外部関数（システム組込関数）の動的バインド呼び出しのサポート，クラスのサポート SWF 9 AVM2 のサポート

とくに SWF 5 における「外部関数の動的バインド呼び出し」が大きいです。SWF 4 までは ActionScript のみで Flash movie を作成するのは事実上不可能でしたが，SWF 5 では「定義用チャンク」に相当するクラスが Flash Machine に準備されたため，これを外部関数・クラスとして呼び出すことにより ActionScript のみでかなりの Flash movie を作成することができるようになりました。といっても，ビットマップやフォントについては ActionScript でイチからどうこうできないため((フォントはともかくビットマップレベルであれば flash.display.BitmapData を利用すれば描けないことはありませんけど。))，リソース埋め込みなどの外部ツールが必要になります。

逆にいうと，SWF 4 までであれば Flash file format specification を読みこなせば自作 Flash Player を作成することができましたが，SWF 5 以降は（specification に記述されていない）Flash Machine 組み込みクラスを実装する必要があります。

さらに付け加えると，ActionScript VM は byte code interpreter として働いているだけであり，ソースとなる言語の文法を規定しません。実際，ActionScript 1.0 から 2.0 では文法的に大幅な改変がなされましたが，byte code compiler の部分で吸収しています*6。また，haXe は型パラメータ*7をもつなど ActionScript 2.0 とは言語仕様に異なる部分がありますが，これも byte code を経由しているおかげです。