Искровой контейнер, не скрывающий содержимого за пределами своего тела - PullRequest
1 голос
/ 07 февраля 2012

Вот как выглядит мой экран:

Screenshot

Он составлен так:

First container <s:HGroup>(900 X 100)--top black area

Second container <s:Group> (900 X 475)--middle white area

Third container <s:HGroup>--(900 X 100)--bottom black area

Если бы проект был выполнен с Flex 3, средняя область была бы <mx:Canvas>.

Теперь предположим, что у меня есть один BorderContainer (125 X 475) и назовите его middleContainerChild . Он расположен на правой стороне средней области. Когда я установил для его позиции y значение -middleContainerChild.height, оно должно быть расположено в y = -475 вне тела контейнера. И как вы можете видеть на изображении выше, он был помещен туда.

Но, кроме как с <mx:Canvas>, изображение по-прежнему отображается, даже если оно больше не находится внутри тела <s:Group> s, и оно отображается "поверх" <s:HGroup>.

См. Изображение ниже для уточнения: 2 images showing the problem

Если я использую <mx:Canvas>, он правильно скрыт, но если я использую контейнер Spark (не только группу, но любой контейнер Spark), он остается видимым.

Кто-нибудь еще имел эту проблему?

Ответы [ 2 ]

4 голосов
/ 07 февраля 2012

Прочитайте немного о clipAndEnableScrolling свойстве GroupBase класса.

С уважением.

1 голос
/ 07 февраля 2012

Поскольку 2DH подсказал мне, я подготовил этот образец,

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="900" minHeight="672">

    <fx:Declarations>
        <s:Move 
            id="moveUp" 
            yFrom="0" 
            yTo="-475" 
            target="{helpWindow}"/>
        <s:Move 
            id="moveDown" 
            yFrom="-475" 
            yTo="0" 
            target="{helpWindow}"/>

    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            private function buttonUp_clickHandler(event:MouseEvent):void
            {
                moveUp.play();
            }

            private function buttonDown_clickHandler(event:MouseEvent):void
            {
                moveDown.play();
            }
        ]]>
    </fx:Script>

    <s:layout>
        <s:VerticalLayout gap="0"/>
    </s:layout> 

    <s:BorderContainer 
        backgroundColor="#000000" 
        height="100" 
        width="100%"/>
    <s:Group 
        height="475" 
        width="100%" 
        clipAndEnableScrolling="true">

        <s:VGroup 
            left="0" 
            top="0">
                <s:Button 
                    label="Play Effect UP" 
                    click="buttonUp_clickHandler(event)"/>
                <s:Button 
                    label="Play Effect DOWN" 
                    click="buttonDown_clickHandler(event)"/>
        </s:VGroup>


        <s:BorderContainer 
            id="helpWindow"
            backgroundColor="#CCCCCC"
            y="{-helpWindow.height}"
            right="0" 
            height="475" 
            width="125"
            />
    </s:Group>
    <s:BorderContainer 
        backgroundColor="#000000" 
        height="100" 
        width="100%"/>
</s:Application>

, поэтому теперь я установил clipAndEnableScrolling моего центрального контейнера в true , ипроблема решена

Спасибо обоим членам стека:)

...