2010-07-28 49 views
0

我有這樣的:Actionscript,BorderContainer.addElement(...)不起作用?

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的地方在屏幕上顯示什麼。只有窗格,沒有內容(項目)。 什麼問題?

+0

你可能想提供一個定義AdditionalPane的實例代碼,並檢查您的storeRetrievedData函數是否實際運行。 – 2010-07-28 09:38:35

+0

解決!我的BorderContainer在另一個部分下!所以這就是問題...... !!! – artaxerxe 2010-07-28 11:25:21

回答

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> 
+0

@artaxerxe爲什麼這個答案不被接受?有什麼問題嗎?如果是這樣,我們應該更新這些信息。或者你現在有更好/更新的答案嗎?如果是這樣,你應該爲這個問題的未來讀者回答你自己的問題。 – JeffryHouser 2012-02-01 16:31:20

相關問題