代码之家  ›  专栏  ›  技术社区  ›  artaxerxe

动作脚本,边界容器。addElement(…)不起作用?[闭门]

  •  0
  • artaxerxe  · 技术社区  · 14 年前

    我有这个:

    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);
    
         //.....
    }
    

    问题是,它不会在屏幕上什么都不显示,它的位置在哪里 标题标签 .仅显示窗格,不显示内容(项目)。 有什么问题吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   JeffryHouser    14 年前

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

    其他一些想法:

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

    在正常情况下,你的皮肤课应该定位和调整标题标签的大小。你有皮肤课吗?

    通常,您会在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>