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

Я выкладывал свои компоненты 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 ]

0 голосов
/ 20 января 2010

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

0 голосов
/ 02 февраля 2010
resizeToContent=true
0 голосов
/ 19 января 2010

Добавить вызовы унаследованных методов;вызовы методов 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%" />
...