我想尽快添加UIComponent。这是代码:
private function make() : void {
var circle : Sprite = new Sprite();
circle.graphics.beginFill(0xFF0000, 0.2);
circle.graphics.drawCircle(0, 0, 20);
var button : Button = new Button();
button.label = "testing...";
var wrapper : UIComponent = new UIComponent();
circle.addChild( button );
wrapper.addChild( circle );
addChild( wrapper );
}
问题是添加了按钮,但未显示。如果我做反转 - 添加精灵到uicomponent - 一切正常,但这样它不起作用。我试图使用无效功能按钮等...甚至尝试将“圈”作为UIMovieClip,但没有运气 - 按钮仍然是隐形的。如果我只是做“addChild(button);” - 它显示了,...请帮助,我做错了什么?如何在精灵中添加一个按钮?
答案 0 :(得分:1)
不幸的是,为了以你尝试的方式使用Sprite,你必须扩展Sprite并实现IUIComponent。
摘自Flex 3语言参考:
注意:虽然孩子的参数是 方法指定为类型 DisplayObject,参数必须 实现IUIComponent接口 作为容器的子项添加。 所有Flex组件都实现了这一点 接口
Sprite没有实现IUIComponent,因此您遇到了一个非常典型的问题。与Sprites相比,UIComponent通常不会出现速度问题,因此我建议您只使用UIComponent。
如前所述,你/可以/扩展Sprite来实现IUIComponent,但这很痛苦。
希望这有帮助!
答案 1 :(得分:1)
简短的回答,你不能。你可以做的不是使用Sprite,而是使用UIComponent作为你的圈子。
原因是UIComponent有很多代码可以改变它的行为方式,包括如何添加和布局子代。你可以基本上把相同的代码带到Sprite,因为UIComponent确实扩展了它,但是这将是非常多余的。这对我很有用:
private function make() : void {
var circle : UIComponent= new UIComponent();
circle.graphics.beginFill(0xFF0000, 0.2);
circle.graphics.drawCircle(0, 0, 20);
var button : Button = new Button();
button.label = "testing...";
var wrapper : UIComponent = new UIComponent();
circle.addChild( button );
wrapper.addChild( circle );
addChild( wrapper );
}