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 しないと初期化されないのだろうか。