TabNavigatorでコンテナの中身の子オブジェクトのインス
問題としていることは下記のエントリでも言及されていること。
プログラミングメモ [Flex] TabNavigatorで表示されてないタブ内のオブジェクトはインスタンスが生成されていない
TabNavigatorなどを使っているときに、まだ描画されていないコンテナや、その中に含まれる子オブジェクトにアクセスしようとすると
『TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。』
が発生する。
解決方法。
TabNavigatorなどのContainerクラスから派生するクラスはcreationPolicyというプロパティを持っていて、このプロパティにどの値を設定するかによってコンテナに含まれる子オブジェクトのインスタンス化のタイミングが決まる。
詳細は以下のとおり
http://livedocs.adobe.com/flex/2_jp/langref/mx/core/Container.html#creationPolicy
<mx:TabNavigator x="0" y="47" id="tabNavigator" creationPolicy="all"> <mx:Canvas label="hogehoge" width="100%" height="100%"> <mx:Label text="ラベルA" id="label_a"/> <mx:Label text="ラベルB" id="label_b"/> <mx:Label text="ラベルC" id="label_c"/> </mx:Canvas> <mx:Canvas label="fugafuga" width="100%" height="100%"> <mx:Label text="ラベルX" id="label_x"/> <mx:Label text="ラベルY" id="label_y"/> <mx:Label text="ラベルZ" id="label_z"/> </mx:Canvas> </mx:TabNavigator>
みたいな感じで、とりあえず
creationPolixy="all"
ってしとけば「インスタンスがありません。nullです( ゚д゚)ゴラァ!」ってことはなさそう。
うーむ、しかし今回のは偶然見つけられたからよかったぜ・・・(^ω^;)