mxml がよくわかんない

mxml って、単にクラス定義の別のやりかたなのかと思ってたんだけど、違うんだろーか。

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
  <mx:VBox textAlign="center" id="hello">
    <mx:Label id="statement" click="test(null);">
    </mx:Label>
  </mx:VBox>
  <mx:Script>
    <![CDATA[
      public function test(xml : XML) : void {
        trace(statement);
      }
    ]]>
  </mx:Script>
</mx:Canvas>

これは(適当な文法だけど)

class ... {
  var hello = VBox();
  var statement = Label();
  hello.addChild(statement)
}

みたいな感じになるんじゃないのかな?

上の mxml を定義すると、ラベルの click から呼ばれるときは statement にきちんと値が入っているのに、外から test 関数を呼ぶと null になっちゃう。なんか根本的に勘違いしてるのかなー。

  • -

上のクラスを new して addChild してる部分があるんだけど、今まで addChild する前に test を呼んでたところを addChild した後に test を呼ぶようにしたらうまく動いた。なぞい。new しただけじゃなくて実際にどっかに addChild しないと初期化されないのだろうか。