UIComponent基类不工作
我有一个BaseComponentClass,我用作所有我的自定义组件扩展的类。 出于某种原因,我的自定义组件在运行时不显示。我没有收到任何编译或运行时错误。 我正在实施所有受保护的UIComponent方法。 我的代码如下所示:UIComponent基类不工作
public class BaseComponentClass extends UIComponent
{
public function BaseComponentClass()
{
super();
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
}
override protected function createChildren():void
{
super.createChildren();
for (var i:uint=0; i < super.numChildren; i++)
{
var childObj:DisplayObject = super.getChildAt(i);
addChild(childObj);
}
}
override protected function commitProperties():void
{
super.commitProperties();
}
override protected function measure():void
{
super.measure();
}
}
然后,我用它作为基类在我的MXML自定义组件有点像这样:
<local:BaseComponentClass xmlns:local="local.com.*" xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Button id="btn" label="My Button" />
</local:BaseComponentClass>
的按钮从不在运行时显示出来。
您是否尝试设置该组件的宽度和高度?
缺省状态下,UIComponent的宽度和高度都设置为0
,你可以在这里看到的默认值的文件,并相应地改变它的基本组件上: http://livedocs.adobe.com/flex/3/langref/mx/core/UIComponent.html
祝你好运!
是的。我做到了。宽度和高度在Flex应用中生效,但没有显示按钮。 – CodeQrius 2010-01-04 19:18:36
我不确定最佳实践,所以在实现它之前先研究一下,但如果是我,我会创建一个数组属性(子类可以从uicomponent中获得),然后在类的某个地方使用defaultProperty元数据标签([DefaultProperty(“children”)])。
如果您要调试代码并在for循环中放置一个断点,您将永远不会碰到addChild代码。事实上,createChildren(uiComponent.createChildren)的goto定义(f3),你会发现它是空的。您必须在您创建的默认属性设置器中显式调用addChild。你最好打赌,如果你总是将这个组件作为一个容器类来使用,那就是扩展Container。 F3进入这些课程以获得最佳实践的感受。
如果您不覆盖受保护的方法(因为您目前没有在其中做任何额外的工作)会发生什么? – 2010-01-05 00:04:11
什么都没有发生。我上面描述的问题仍然存在。 – CodeQrius 2010-01-05 00:10:39