なにやら意味のわからないタイトルになっていますが、
なんとなく書いている flexのmxmlコンポーネント。
<mx:Canvas> <mx:Label /> </mx:Canvas>
なんて書いていたと思ったら、
<mx:DataGrid>
<mx:columns>
<mx:DataGridColumn />
</mx:columns>
</mx:DataGrid>
のように書いていた。
columnsなんてコンポーネントはないはず。
ここでcolumnsなんて書かなくても、mx:DataGridColumnでいいのになーと思っていた。
また、タグの下に書いたものはその親のaddChildによって追加されると思っていた。
しかし、それではいろいろとつじつまがあわないのも分かっていた。
なんとなーく、flex frameworkのソースをぶらぶらと気になる部分を見ていたら気がつきました。
単なるDataGridのsetterでcolumnsを設定していたという事でした。
[AS]
[Bindable("columnsChanged")]
[Inspectable(arrayType="mx.controls.dataGridClasses.DataGridColumn")]
override public function set columns(value:Array):void{
}
[/AS]
という事なんですね。
だから、columnsの子はDataGridColumnになり、Array型として登録していたということでした。
だから、addChildじゃないんだーーー。
ルールといえばルールだが、エンジニアとしてはソースでわかると安心できますね。
頭での理解がたりなくても、肌の理解度がふかまりますよね。
いやー、この辺もわかった上でドキュメントとか見れば書いてあるんでしょうね。
わからないと、書いてあってもそれが読めないんですよね。
改めて、mxmlの基本を勉強しました。
これで、もう少しは独自コンポーネントを作りやすくなりました。


