Как получить компоненты Flex для заполнения доступного пространства с помощью Actionscript

Я выкладывал свои компоненты Flex, используя mxml, и они работали правильно. Но затем я хотел переключить их на Actionscript, потому что я хотел, чтобы они расширили базовый компонент, который обеспечивает функциональность по умолчанию.

Я использую код, за исключением того, что мои компоненты, которые использовали для заполнения всего пространства с использованием width="100%" и height="100%", отображаются для отображения только с использованием размеров по умолчанию. Знаете, как я могу заставить их снова занять все пространство?

Вот тестовый компонент, с которым я играю, который показывает проблему.

Main.mxml

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:bbq="components.*" backgroundGradientColors="[#000000, #3333dd]" minWidth="480" minHeight="320" layout="vertical" verticalAlign="top" horizontalAlign="center" paddingLeft="0" paddingRight="0" paddingTop="30" paddingBottom="0" width="100%" height="100%" >

<mx:VBox backgroundColor="0xcccc66">
    <mx:ViewStack id="mainViewStack" width="100%" height="100%" color="0x323232">
        <bbq:TestComp id="testComp" height="100%" width="100%" />
        <bbq:ResultsBox />
    </mx:ViewStack>
</mx:VBox>    

TestComp.as

package components {

import mx.containers.VBox;

import mx.containers.Panel;

import flash.events.*;

public class TestComp extends VBox {
    private var p:Panel;

    function TestComp(){
        super();
        percentHeight = 100;
        percentWidth = 100;
    }

    override protected function createChildren():void {
        super.createChildren();
        p = new Panel();
        p.percentHeight = 100;
        p.percentWidth = 100;
        p.title = "Test Comp";
        addChild(p);
    }       
}

}

3 ответа

Я думаю, я мог бы знать, что это такое. Я думаю, что я явно установил ширину и высоту одного из других компонентов в стековом представлении, и я думаю, что это повлияло на сам стек, так что все остальные компоненты, добавленные в него, также соответствуют этим измерениям.

Добавить вызовы унаследованных методов; вызовы методов super();

import mx.containers.VBox;
import mx.containers.Panel;
import flash.events.*;

public class TestComp extends VBox {
    private var p:Panel;

    function TestComp(){
        super(); // add this line

        percentHeight = 100;
        percentWidth = 100;
    }

    override protected function createChildren():void {
        super.createChildren(); // add this line

        p = new Panel();
        p.percentHeight = 100;
        p.percentWidth = 100;
        p.title = "Test Comp";
        addChild(p);
    }       
}

В тебе mxml:

<local:TestComp width="100%" height="100%" />
resizeToContent=true
Другие вопросы по тегам