0

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

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

4

3 回答 3

2

您需要在 createChildren 方法中而不是在构造函数中添加按钮。

protected var button:Button;

override protected function createChildren():void {
    super.createChildren();

    button = new Button();

    addChild(button);
}

根据您要执行的操作,您可能还需要实现 measure 和 updateDisplayList 方法。

于 2013-01-28T23:33:49.363 回答
1

直接使用UIComponent,您不会为您处理孩子的布局;您需要手动设置子组件的位置和大小(请参阅文档)。

考虑使用 a Group(或者Canvas,如果您仍在使用 MX 组件)来处理子布局。你仍然可以在 中添加渲染updateDisplayList,只要确保你也调用super.updateDisplayList()了。

于 2013-01-28T22:18:36.433 回答
0

您需要阅读 ActionScript 组件和 Flex 组件之间的区别。使用 Flex 组件时,必须使用container.addElement( element ),而不是container.addChild( child )。据我所知,具有此功能的唯一类源自Group(至少在我最熟悉的 Spark 框架中)。因此,扩展 UIComponent 将不允许您添加Button,尽管可以将 UIComponent 添加到 Flex 容器中(我不相信普通的 Sprite 可以这样做)

于 2013-01-28T22:17:46.143 回答