FLASH入門以前

IECSS対策に力尽き、息抜きエントリー。

昨日ふと疑問に思ったのですが、以下のようなスクリプトを記述したとき、my_btnをクリックすると普通にローカル変数の値が出力されるはなぜでしょう?

hoge();

function hoge() {
  var localVar = "flash";
  my_btn.onRelease = function() {
    trace (localVar);
  }
}

こんなことも理解できていないのに、ActionScript 3.0とか勉強しているのは恥ずかしいなぁ。

[05/17追記]
どうも気になるので調べてみたら、この件について野中さんが解説されてました。キーワードは「Activationオブジェクト」(多分)。初耳でしたorz。この解説のすべてが理解できたわけではありませんが、こういう使い方をすると、上記関数hogeが実行された後も、ローカル変数localVarが使用中と判断され、メモリーから削除されないっぽいです。野中さんの著書にも、解説があるそうなので、近いうちにそちらも読ませていただこうと思います。ガベージコレクションの仕組みとかもよく分かってないし、まだまだ知らないことがたくさんあるなぁー。

野中さんのありがたい解説「オブジェクトとイベントの関係」
(文字化けする場合はブラウザの文字設定を「Shift-JIS」に変えてみてください。)