WedX - журнал о программировании и компьютерных науках

Исключение в spark.components :: Label / truncateText () после изменения размера родительского элемента

Я получаю странное исключение из 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, надеясь, что она будет собрана мусором.

10.08.2011

Ответы:


1

Есть ли причина, по которой вы не устанавливаете свой ярлык как right="10"? Это стиль, поэтому вам нужно установить его именно так. Это будет работать, пока ваш родитель использует абсолютный макет.

Что касается усеченного текста, я считаю, что есть способ отключить его (вероятно, truncate = "false");

10.08.2011
  • Я получаю точно такое же исключение, используя right = 10 и bottom = 10. : \ 10.08.2011
  • Это странно. Я никогда раньше не видел этой проблемы. Вы пробовали использовать только нормального (нестандартного) родителя и делать то же самое? 10.08.2011
  • Ну, размер нестандартного BorderContainer нельзя изменить. :) Родитель очень простой и единственное, что в нем меняется, это ширина / высота и x / y. Я почти уверен, что использование другого, не настраиваемого родителя не приведет к этому исключению. 10.08.2011
  • Лучше убедиться, чем зря ковыряться. 10.08.2011
  • У меня такая же проблема с родителем на основе группы. Смотрите обновление вопроса. 10.08.2011
  • В моем случае я могу воспроизвести эту проблему с одним пробелом перед длинным URL-адресом. Пробелы, кажется, сбивают его с толку. 02.10.2012
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]