MXMLコンポーネントを自作して、その中でさらにMXMLを内包しているときとかその中の変数をどう初期化するのか。
気づいたとき、たいした話じゃなかったなあというか、まだまだActionScriptを分かってないなあと思いました。
HogeHBox:
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" xmlns:ns1="sample.*">
<mx:Script>
<![CDATA[
public var hoge:String;
]]>
</mx:Script>
</mx:HBox>
FooCanvas:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%">
<mx:Script>
<![CDATA[
public function init():void {
this.hogehoge.hoge = "test";
}
]]>
</mx:Script>
<ns1:HogeHBox id="hogehoge"></ns1:HogeHBox>
</mx:Canvas>
メインコード:
var foo:FooCanvas = new FooCanvas();
foo.init();
とかやるとhogehogeが初期化されていなくて怒られると。で、これはFooCanvasを
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%">
<mx:Script>
<![CDATA[
[Bindable]
public var hogeString:String;
public function init():void {
this.hogeString = "test";
}
]]>
</mx:Script>
<ns1:HogeHBox id="hogehoge" hoge="{hogeString}"></ns1:HogeHBox>
</mx:Canvas>
っていう感じでhogehogeのmxmlのプロパティとして与えておけばいいという。基本なんですね、きっと。
以上