Я получаю странное исключение из s: Label в Flex 4.1.У меня есть родитель (расширяющий BorderContainer), который имеет: 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/http://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, надеясь собрать ее.