Actionscript,BorderContainer.addElement(...)不起作用?

时间:2010-07-28 08:47:46

标签: flex actionscript-3 flex4

我有这个:

public class AditionalPane extends BorderContainer {
     //.....

       private function storeRetrievedData(e : Event) : void {
        var titleLabel : Label = new Label();
        titleLabel.text = "Members: ";
        titleLabel.height = 100;
        titleLabel.x = 1;
        titleLabel.y = 1;
        //titleLabel.visible = true;
        super.addElement(titleLabel);

     //.....
}

问题是它在屏幕上什么也没有显示 titleLabel 的位置。只有窗格,没有内容(项目)。 有什么问题?

1 个答案:

答案 0 :(得分:1)

你确定你的titleLabel有宽度吗?零宽度实际上会使其不可见。

其他一些想法:

你会做“super.addElement()”而不是“this.addElement()”吗?我希望两者都有效,但这是不寻常的语法。

在正常情况下,你的皮肤类应该定位并调整titleLabel的大小。你有皮肤类吗?

通常,您可以在partAdded方法中设置其他属性,例如“text”。因此,您的课程可能会被重新考虑为:

public class AditionalPane extends BorderContainer {
     public function AditionalPane ():void{
      this.setStyle("skinClass", mySkin);
     }

    [SkinPart(required="true")]
    public var titleLabel : Label;

    override protected function partAdded(partName:String, instance:Object):void { 
     if (instance == titleLabel){
        titleLabel.text = "Members: ";
     }
    }
}

皮肤类看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" 
             xmlns:s="library://ns.adobe.com/flex/spark" 
             xmlns:mx="library://ns.adobe.com/flex/halo" width="400" height="300">
    <fx:Metadata>
        <![CDATA[ 
            [HostComponent("com.something.AdditionalPane")]
        ]]>
    </fx:Metadata> 

    <s:Label id="titleLabel" x="1" y="1" height="100" />


</s:SparkSkin>