C言語プログラマから見たActionScript

最近ActionScriptを使うようになった。
普段はGUIのプログラムはMFCで書いているのだけど、FLASH環境も慣れるとなかなか良い。

良いと思うのは無名関数。

if (flag) {
  onEnterFrame = function() {
    ++count;
  }
}

みたいに書けるのは便利。しかしthisの意味がイベントハンドラによって異なるので、そこがちょっと難点。孫オブジェクトのハンドラから親を操作しようと思うと

if (flag) {
  foo.bar.onEnterFrame = function() {
    ++_parent._parent.count;
  }
}

みたいな感じになっていまいち。さらに、たとえば

function SetEnterFrameHandler(mc:MovieClip) {
  mc.onEnterFrame = function() {
    _parent...
  }
}

の場合に引数として孫オブジェクトを渡すと、_parentが子オブジェクトを指すのでうれしくない。よくわからないので私は

function SetEnterFrameHandler(mc:MovieClip) {
  mc.Parent = this;
  mc.onEnterFrame = function() {
    this.Parent....
  }
}

のようにしている。


困るのは型チェックがないこと。引数が足りなかったり存在しないプロパティにアクセスしてもエラーが出ないので、引数の順番やプロパティの名前を変えたりすると痛い目に遭う。
チーム開発には不向きなんじゃないかと思った。