Я получаю странное исключение из s: Label в Flex 4.1. У меня есть родительский элемент (расширяющий BorderContainer), в котором есть s: Label.
В родительском конструкторе у меня есть:
label = new Label();
label.setStyle("color", "Red");
label.setStyle("fontSize", 20);
Позже устанавливается текст метки (только для символа), он позиционируется и добавляется с помощью addElement (). Все было в порядке, пока я не начал изменять размер родительского компонента. Чтобы разместить метку в правильном месте, я переместил ее расположение в updateDisplayList ():
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
...
label.x = width - 10;
label.y = height - 10;
}
Если при изменении размера родителя размер становится слишком маленьким, возникает следующее исключение:
ReferenceError: Error #1069: Property -1 not found on __AS3__.vec.Vector.<flash.display::DisplayObject> and there is no default value.
at spark.components::Label/truncateText()[E:\dev\4.x\frameworks\projects\spark\src\spark\components\Label.as:1246]
at spark.components::Label/https://www.adobe.com/2006/flex/mx/internal::composeTextLines()[E:\dev\4.x\frameworks\projects\spark\src\spark\components\Label.as:485]
at spark.components.supportClasses::TextBase/updateDisplayList()[E:\dev\4.x\frameworks\projects\spark\src\spark\components\supportClasses\TextBase.as:684]
at mx.core::UIComponent/validateDisplayList()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8709]
at mx.managers::LayoutManager/validateDisplayList()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:663]
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:736]
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1072]
Как я уже сказал, метка содержит только один символ, и мне не нужно никакого усечения. Более того, когда я получаю исключение, для метки все еще остается пустое место.
Я пытался :
label.maxDisplayedLines = 1;
Но это не решило проблемы. Я даже попытался вернуться к метке mx и установить для truncateToFit значение false, но я получаю то же исключение, когда делаю родительский элемент слишком маленьким.
Любые идеи будут оценены по достоинству. Заранее спасибо! :)
Обновление. Я протестировал это с помощью настраиваемого компонента на основе группы, и проблема не устранена. Странно то, что если я удалю метку с помощью removeElement () в начале операции изменения размера, я получу то же исключение. Это справедливо, даже если я установил для ссылки на метку значение null, надеясь, что она будет собрана мусором.