Flex / as3: если я установил BorderWeight в BorderContainer, смещенная метка будет смещена ... почему? - PullRequest
2 голосов
/ 22 мая 2011

У меня есть BorderContainer с меткой внутри.Мне нужно, чтобы этот ярлык был в центре контейнера.BorderContainer не имеет макета (я полагаю, он получает стандартное расположение, basicLayout ...).

Мой код:

Определение BorderContainer:

<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx"
               creationComplete="bordercontainer1_creationCompleteHandler(event)"
                addedToStage="bordercontainer1_addedToStageHandler(event)"
               cornerRadius="200" borderWeight="20"  >

Когда мой BorderContainer имеет значениепо завершении я динамически загружаю метку:

protected function bordercontainer1_creationCompleteHandler(event:FlexEvent):void
        {
            // TODO Auto-generated method stub
            var countdownText:Label = new Label();
                countdownText.width = this.width * 0.5;
                //countdownText.height = this.height * 0.5;
                countdownText.text =String( countdownDuration );
                    countdownText.setStyle("fontSize","200");
                    countdownText.setStyle("fontFamily", "Arial");
                    countdownText.setStyle("color","#FF0000");
                    countdownText.setStyle("fontWeight", "bold" );
                    countdownText.setStyle("textAlign", "center");                  
                this.addElement(countdownText);
                //trace("width border:", this.width, ", text width:", countdownText.width);
                countdownText.x = (this.width-countdownText.width)/2;
                countdownText.y = (this.width-countdownText.width)/2;

        }

С этим кодом текст метки центрируется в контейнере, но если я установил свойство BorderWeight, текст сместится !!!!!

Спасибо заранее.

1 Ответ

1 голос
/ 22 мая 2011

Итак, я не уверен, что вы подразумеваете под «сдвигом».Я не смог воспроизвести проблему с вашим кодом ... хотя ваш код неполон.Что такое, например, countdownText или bordercontainer1_addedToStageHandler?

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

<fx:Declarations>
    <fx:Number id="countdownDuration">5.123</fx:Number>
</fx:Declarations>

<s:BorderContainer cornerRadius="200" borderWeight="20" width="100%" height="100%">

    <mx:Label width="50%" text="{countdownDuration}"
             fontSize="200" fontFamily="Arial" color="#FF0000"
             fontWeight="bold" textAlign="center"
             verticalCenter="0" horizontalCenter="0" />

</s:BorderContainer>
...