我想在Flex 3中創建自定義容器。 我希望此容器具有一個內部容器,它可以是TabNavigator或VBox,具體取決於用戶設置的某個標記。這個標誌在頁面呈現後不會改變,所以我不需要從一個組件「動態」移動到另一個組件。自定義Flex 3容器
到目前爲止,我有這樣的代碼:
public class AccNavigator extends Container {
public var container:Container;
public function AccNavigator() {
if (GlobalSettings.Vertical) { // This is the said variable
container = new VBox();
}
else {
container = new TabNavigator();
}
container.percentHeight = 100;
container.percentWidth = 100;
}
override protected function createChildren():void {
super.createChildren();
this.addChild(container);
}
override public function addChild(c:DisplayObject):DisplayObject {
if (c == container) {
// MessageAlert is the same as an Alert but with custom code
MessageAlert.show("addChild: Adding Container");
super.addChild(c);
} else {
MessageAlert.show("addChild: " + c.toString());
container.addChild(c);
}
return c;
}
override protected function initializationComplete():void {
// used for bebugging purposes
MessageAlert.show("container is visible: " + container.visible.toString());
MessageAlert.show("this is visible: " + visible.toString());
MessageAlert.show("container children: " + container.numChildren);
MessageAlert.show("this children: "+ this.numChildren);
}
}
我使用這個自定義容器在MXML這樣的:
<AccNavigator>
<HBox>
<more things...>
</HBox>
<HBox>
<more things...>
</HBox>
</AccNavigator>
但是當我運行應用程序,沒有任何組件都可見。 當執行initializationComplete代碼,我看到以下內容:
- 容器可見:真
- 這是明顯的:真正的
- 容器孩子:2個
- 這個孩子:1
我花了一些時間閱讀這個http://www.developmentarc.com/site/sites/default/files/understanding_the_flex_3_lifecycle_v1.0.pdf 瞭解組件生命週期,但我仍然無法理解我的代碼中缺少的內容。
有人可以幫助我,告訴我我錯過了什麼嗎?
謝謝。