我有这个:
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 :(得分: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>