PopUpManager + TitleWindow + Form: helpContent рисуется вне TitleWindow - PullRequest
0 голосов
/ 11 сентября 2011

Я пытаюсь добавить всплывающее окно настроек в свое приложение Flex 4.5, но у меня проблема в том, что строка справки формы по какой-то причине рисуется вне окна TitleWindow. Добавление width = "100%" height = "100%" в форму ничего не меняет:

screenshot

Кто-нибудь, пожалуйста, есть идеи, как справиться с этим делом?

Ниже приведен мой очень простой тестовый код. Если вы вставите его в проект Flash Builder 4.5, вы сразу увидите проблему.

SettingsTest.mxml:

<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"
    xmlns:comps="*"
    width="700" height="525" >

    <fx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;

            private function showSettings(event:MouseEvent):void {
                var _settings:Settings =
                    PopUpManager.createPopUp(this, Settings, true) as Settings;
                PopUpManager.centerPopUp(_settings);
            }           
        ]]>
    </fx:Script>

    <s:Button right="10" bottom="10" label="Settings" click="showSettings(event)" />

</s:Application>

Settings.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx"
    width="400" height="300"
    close="handleClose()"
    creationComplete="init(event)">

    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import mx.managers.PopUpManager;
            import flash.filters.ColorMatrixFilter;

            private var _settings:SharedObject =
                SharedObject.getLocal('settings');

            public function init(event:FlexEvent):void {
                handleHide(null);
            }

            private function handleClose():void {
                PopUpManager.removePopUp(this);
            }

            private function handleHide(event:Event):void { 
                var hide:Number = _hide.value;
                _settings.data.hide = hide;
                _settings.flush();

                if (hide >= 0.8) {
                    filters = null;
                } else {
                    var matrix:Array = new Array();
                    matrix = matrix.concat([1, 0, 0, 0, 1]);    
                    matrix = matrix.concat([0, 1, 0, 0, 1]);    
                    matrix = matrix.concat([0, 0, 1, 0, 1]);    
                    matrix = matrix.concat([0, 0, 0, hide, 1]); 

                    filters = [ new ColorMatrixFilter(matrix) ];
                }
            }
        ]]>
    </fx:Script>

    <s:Form width="100%" height="100%">
        <s:FormItem label="Invisible:">         
            <s:HSlider id="_hide" minimum="0.25" maximum="1.00" value="1.00" stepSize="0.25" change="handleHide(event)" />
            <s:helpContent>
                <s:Label text="Make the game less visible at the screen" />
            </s:helpContent>
        </s:FormItem>   
    </s:Form>
</s:TitleWindow>

1 Ответ

1 голос
/ 12 сентября 2011

Это не проблема формы, а проблема метки, я считаю. Попробуйте добавить width="100%" к метке или указать для нее абсолютную ширину.

...