AS3中的addChild(Button)

时间:2013-01-28 21:41:47

标签: actionscript-3

我正在编写一个扩展mx.core.UIComponent的类。在这个类的构造函数中,我想添加一个Button(spark.components.Button)。但是,创建一个新的Button对象(例如var b:Button = new Button();)然后执行this.addChild(b)不起作用 - 没有按钮出现。是否有任何理由不能将Button对象添加为子项?

编辑:只是添加,当我打印出孩子时,它说Button对象是一个孩子,但Button没有出现。

3 个答案:

答案 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不能这样做)