我正在编写一个扩展mx.core.UIComponent的类。在这个类的构造函数中,我想添加一个Button(spark.components.Button)。但是,创建一个新的Button对象(例如var b:Button = new Button();)然后执行this.addChild(b)不起作用 - 没有按钮出现。是否有任何理由不能将Button对象添加为子项?
编辑:只是添加,当我打印出孩子时,它说Button对象是一个孩子,但Button没有出现。
答案 0 :(得分:2)
您需要在createChildren方法中添加不在构造函数中的按钮。
protected var button:Button;
override protected function createChildren():void {
super.createChildren();
button = new Button();
addChild(button);
}
根据您的尝试,您可能还需要实现measure和updateDisplayList方法。
答案 1 :(得分:1)
直接使用UIComponent
,您无法获得为您处理的孩子的布局;您需要手动设置子组件的位置和大小(see docs)。
考虑使用Group
(或Canvas
,如果您仍然使用MX组件)来处理子布局。您仍然可以在updateDisplayList
中添加呈现,只需确保同时调用super.updateDisplayList()
。
答案 2 :(得分:0)
您需要了解ActionScript组件和Flex组件之间的差异。使用Flex组件时,必须使用container.addElement( element )
,而不是container.addChild( child )
。据我所知,具有此功能的唯一类来自Group
(至少在Spark框架中,我最熟悉的那个)。因此,扩展UIComponent将不允许您添加Button
,尽管可以将UIComponent添加到Flex容器(我认为普通的Sprite不能这样做)