- 高速化
実行速度が AS2 より 100倍高速!(あくまで計算処理の高速化で、描画速度はそんなに向上してないからなぁ・・・というのがみんなの感想。)ランタイム時に型チェックしてくれる。"var Speed:number = 100" とか、きちんと型指定するようにしましょう。その分恩恵もあるから。 -
- DisplayObject のインスタンス化
ディスプレイ(表示)モデルが刷新されました。AS2 では MovieClip クラスは特別扱いされていたので、専用の createEmptyMovieClip() とか attachMove() 等が用意されていましたが、AS3ではなくなりました。new Date() や new Array() 達と同様、みんな平等に扱うようになったのだと考えましょう。 - DisplayObject が整備されました
ものを表示させるときの器となるクラス "DisplayObject クラス" がより細分化&構造化されました。図の左ほど軽量、右は多機能。MovieClip クラスからタイムラインをなくした Sprite クラスも登場しました。AS3 では多用することになります。ちなみに、自分自身の中にさらに DisplayObject を内包(入れ子)できるのが DisplayObjectContainer クラスとそのサブクラス(図表右側)になります。 - ディスプレイリストによる連続的な管理
AS2 での depth (深度、レベル)管理はなくなりました。AS3 ではディスプレイオブジェクトのディスプレイリスト(表示リスト、リスト)で管理します。AS2 ではとりあえず深度1000に MC を配置とかしてましたが、AS3 はとにかくリストに隙間を空けることは出来ません。 - 相対的な深度管理
最前面のムービークリップ topMC のディスプレイリスト位置に myMC を挿入すると、topMCのディスプレイリストは1つ繰り上がります。前の項と同じく「隙間はできない」ということです。 - リペアレントしやすい
mc1 上のムービークリップ my_mc を、mc2 上に配置し直すといったことが簡単にできるようになりました。removeChild しても、対象 MC 上での表示が解除されただけで、メモリ上にはまだ存在はしているため、それをそのまま別の場所に addChild できるわけです。 -
- クラスパッケージ構成が整頓されました
パッケージ構成が理路整然となって理解しやすくなりました。クラスって何?っていう人にとっては覚えることが増えた形になるのかもしれませんが。 - コンスト
定義後に変更することはないであろう変数=定数は "const" 宣言してあげると、名実ともに変更の出来ない不動の定数に出来ます。コーディングのお作法としては、変数名をアルファベット大文字と"_"で定義するそうです。event クラスの ENTER_frame もその例ですね。だれも上書きしませんもんね。 - アクセス修飾子が増えました
クラス間のアクセスルールをより詳細に指定できるようになりました。internal なんて使わないよっHaHaHaって Grant さんが言ってた気がしたのですが、そうなんですか? - ネームスペース
違うネームスペース(名前空間)の同名のメソッドをきちんと識別するために用意されています。これは Actionscript ライブラリ用に名前空間が用意されているという例で、XML の名前空間とはまた別の話ですよ。 - 引数のデフォルト値
資料のコードは何を示しているかというと「第1引数 p1 は必須、第2引数 p2 は任意で整数で指定してくださいな。未指定ならデフォルトの10でいきますよ」という指定。同じ内容を AS2 で書こうとするとコードがもっと長くなってしまいますね。 - ...rest
ものすごく便利。 - メソッドクロージャー
自分のスコープ外のメソッドを呼び出すのが楽になりました。いちいち Delegate しなくても別スコープの関数を呼び出したりできるようになりました。 - ドキュメントクラス
_root を型指定できるようになったということ。AS2では裏技を使わない限り、_root は MovieClip クラスでしたが、AS3 では自作クラス(ただし Sprite 継承であること)のインスタンスに設定できるようになりました。 - 新しい型登場
型指定において、uint(正の整数のみ)と int(整数) が登場。むやみに number(数値) 唱えるなよということ。Void は void と小文字の"v"になりましたので気をつけて! -
-
-
-
-
-
- リスナーの優先順位を指定できる
-
- ダブルクリックを検出
ダブルクリックを検出できるようになりました。クリック間隔も設定できます。 - マウスがブラウザ表示エリアを離れた時とかを検出できるようになりました。
プレゼンのサンプルでテストできるのですが、いまいち挙動が把握できません。要勉強。swf領域からマウスが出ると【MOUSELEAVE】になり、一度ブラウザが非アクティブになった後に戻すと【ACTIVATE】のようです。
また、ウィンドウ内のアドレスバーやgoogle検索等のテキスト入力箇所アクティブで【DEACTIVATE】のようです。(コメントいただきました) - 特定ポイントの下に配置された全てのオブジェクトを取得できる
資料のサンプルでいろんな場所にマウスを移動させ、下のテキストフィールドに注目しましょう。マウスカーソル(特定ポイント)の位置の下にある全てのオブジェクトのインスタンス名が取得できていますね。AS2 では通常一番上だけが反応する使用でしたね。 - テキストフィールドの機能強化
これも資料のサンプルで一目瞭然です。表示されているテキストの上でクリックすると、その文字が何なのか&何文字目か&行数を下に表示してくれます。こんな機能 AS2 にはありませんでしたよね! - テキスト選択状態をキープしておける
プレゼン資料の上のテキストフィールドの任意の文字列をドラッグ選択した状態で、下のテキストフィールドも選択してみましょう。そういうことです。 -
-
- Dictionary クラス登場
Grant さんは Dictionary クラスが大好きだと仰ってました。 - Timer クラス登場
何秒ごとに関数を実行!という setInterval 的な使い方はもちろん、サンプルのように「3回だけ繰り返せ」といった命令も簡単に設定できます。 - 正規表現が使えるようになった
ストリング(文字列)の検索/操作/置換がグッと楽になります。サンプルは「文字列中から "ing" で終わる単語を抜き出す」コードです。同様のことを AS2 でやろうと思うとゾッとしますよね。他の言語をやる上でも有効なスキルとなる「正規表現」、もの凄く便利だなので、せっかくなのでマスターしましょう。 - E4XでインラインでXML操作&変数との絡め方
Actionscriptコード内でネイティブに XML が扱えるので、属性やノード値に AS の変数を代入するといった作業が簡単にできるようになりました。
- E4X でフィルタリングも便利に
AS2 では CASA や XPath4AS2 を導入することで実現していましたが、AS3 では標準でサンプルコードのようなフィルタリング(条件)処理、さらに正規表現フィルタリングまでできるようになりました。便利すぎですね。 - E4X での XML 操作
とにかく、AS から XML をいじりまくれるということです。
- バイナリデータ
JPGとかそういう次元ではなく、ByteArray(データの最小?単位のバイトの配列)で操作できてしまうので、Flash 上で作った複数画像をまとめて ZIP 圧縮してユーザーにダウンロードさせることも可能。エントリーユーザーからすると「見えたらあかんとこまで見えちゃう」そんな感じでしょうか。 -
-
-
-
-
-
-
- フレームレートを AS から設定できる
極端な数値にしても意味無し男ちゃんですが AS から FPS 調整が出来るようになりました。試しにプレゼン資料下部表示されている 4fps のボタンをクリックして、資料をスライドさせてみると・・・。 - フレームラベル名にアクセスできる
AS2での gotoAndPlay("ラベル名"); ではなく、ラベル名の取得もできるようになったということです。現在のフレームのラベル名を取得できる他、ある MC のフレーム上に設定されたフレームラベル名のリストを配列の形で取得することもできます。 - drawing API
四角形、円や楕円、角丸矩形、特定の角だけ角丸な矩形、これら図形の描画が楽になりました。AS2では普通の矩形(四角形)を描くだけでも、moveTo, lineTo を駆使しなければならず、冗長で面倒でしたが、やっとこさ「矩形を描画せよ!」という風にスッキリと命令することができるようになりました。 -
via http://mtl.recruit.co.jp/blog/2007/10/actionscript_3_50.html