Actionscript 3 在AS3中添加子项(按钮)

Actionscript 3 在AS3中添加子项(按钮),actionscript-3,Actionscript 3,我正在编写一个扩展mx.core.ui组件的类。在这个类的构造函数中,我想添加一个按钮(spark.components.Button)。但是,创建一个新的按钮对象(例如var b:Button=new Button();)然后执行此操作。addChild(b)不起作用——没有按钮出现。有什么原因不能将按钮对象添加为子对象吗 编辑:只是补充一下,当我打印出子对象时,它表示按钮对象是子对象,但按钮没有显示。您需要了解ActionScript组件和Flex组件之间的差异。使用Flex组件时,必须使用

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


编辑:只是补充一下,当我打印出子对象时,它表示按钮对象是子对象,但按钮没有显示。

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

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

直接使用
UIComponent
,但您无法为自己处理子级的布局;您需要手动设置子组件的位置和大小()


考虑使用
(或者
画布
,如果您仍然使用MX组件)来处理子布局。您仍然可以在
updateDisplayList
中添加渲染,只需确保同时调用
super.updateDisplayList()

直接使用
UIComponent
,就不会为您处理子级的布局;您需要手动设置子组件的位置和大小()


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

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

protected var button:Button;

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

    button = new Button();

    addChild(button);
}

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

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

protected var button:Button;

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

    button = new Button();

    addChild(button);
}

根据您要做的事情,您可能还需要实现measure和updateDisplayList方法。

谢谢您的回答。但是,除非我理解错误,否则我需要使用addChild(不是addElement),因为我要添加到的容器是mx容器,而不是spark容器。无论我使用mx按钮还是spark按钮,该按钮都不会出现。这两个按钮类都继承自UIComponent和DisplayObject,所以据我所知,它们都应该是AddChild的有效参数。。。再次感谢。谢谢你的回答。但是,除非我理解错误,否则我需要使用addChild(不是addElement),因为我要添加到的容器是mx容器,而不是spark容器。无论我使用mx按钮还是spark按钮,该按钮都不会出现。这两个按钮类都继承自UIComponent和DisplayObject,所以据我所知,它们都应该是AddChild的有效参数。。。再次感谢。谢谢——这很有用,但最终对我没用。即使在实现createChildren、measure和updateDisplayList之后,按钮仍然没有出现,不知道为什么。但是谢谢你的回答!谢谢——这很有用,但最终对我没用。即使在实现createChildren、measure和updateDisplayList之后,按钮仍然没有出现,不知道为什么。但是谢谢你的回答!