Flex2.0やFlash9 public alphaを用い、
AS3.0のサービス開発も徐々に普及し始めています。

日本では、6月下旬にAdobe CS3(日本語版)が発売されるとの事で、
ますますAS3.0が身近になりますね。
せっかくなので、暇を見つけてAS2.0との比較をつらつらと語ろうと思います。

今回は、特定階層の無効化について、気になった部分を挙げてみます。

今までAS2.0で画面全てのものを触れさせたく無い場合
以下のようなコードで比較的楽に無効化が可能でした。

/** AS2.0 触れさせたくない階層の最上位に無効化レイヤーを敷く */ function setInvalidLayer(layer:MovieClip):Void { var square:MovieClip = layer.createEmptyMovieClip("invalidLayer", layer.getNextHighestDepth()); square.beginFill(0x000000, 0); square.moveTo(0, 0); square.lineTo(Stage.width, 0); square.lineTo(Stage.width, Stage.height); square.lineTo(0, Stage.height); square.lineTo(0, 0); square.endFill(); square.onRollOver = function() {} square.useHandCursor = false; } setInvalidLayer(this);

ですが、AS3.0で記述すると更に楽に記述が可能です。

/** AS3.0 触れさせたくない階層の最上位に無効化レイヤーを敷く ※AS3.0のコンパイルには Adobe labs の Flash9 public alphaを利用しています。 */ import flash.display.Sprite; function setInvalidLayer(layer:Object):void { var square:Sprite = new Sprite(); square.graphics.beginFill(0x000000, 0); square.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); layer.addChild(square); } setInvalidLayer(this);

AS2.0と比較して楽と表現した点は以下です。
(1)ボタン化が不要(新規生成Object以下が触れれない)
(2)z軸の管理(depth)を明示しなくて良い(addChildの仕様で内部管理してくれる)

AS2.0とAS3.0、書き比べると面白いですね。ではまた!

HTML5飯