Flex / Actionscript truncateToFit для компонента метки - PullRequest
0 голосов
/ 14 апреля 2009

В моем приложении Flex есть несколько меток, для которых свойство truncateToFit установлено в значение true. Проблема в том, что вместо отображения «...» в конце любого усеченного текста отображается нулевое значение.

Т.е. если бы текст моей метки был: "Здравствуйте, Stackoverflow!" Я мог бы ожидать, что мой ярлык будет выглядеть так:

«Здравствуй, Стаков ...»

Вместо этого отображается

"Привет, Stackovnull"

Любая помощь будет полезна!

Пример того, как должно выглядеть усечение

Редактировать: - Пример кода:

<mx:HBox width="200" ... >
   <mx:Label maxWidth="150" truncateToFit="true" text="Really long text.Really long text.Really long text.Really long text.Really long text" />
</mx:HBox>

Ответы [ 6 ]

2 голосов
/ 21 апреля 2009

Ха-ха! Я нашел решение. Извините, ребята - Вероятно, из-за недостатка информации вам, ребята, было трудно отлаживать для m :(

Итак, в любом случае - Оказывается, у меня был внешний ресурсModule SWF, из которого загружалось мое приложение для получения локализованных языковых данных и т.д. и вместо этого он отображал «ноль». Я добавил эти данные в Resource SWF, и все работает как положено.

Спасибо миллион за попытку помочь мне, ребята. ;)

1 голос
/ 03 сентября 2010

Проблема в том, что один из комплектов ресурсов Flex по умолчанию не включен в ваши скомпилированные файлы локализации. Смотрите здесь для подробного объяснения и исправления: http://deniszgonjanin.posterous.com/flex-truncation-null-error-fix

0 голосов
/ 06 июля 2010

У меня был огромный бой с этой проблемой сегодня (3 часа), что слишком много для небольшой проблемы, как эта. Во всяком случае, ни один из вышеперечисленных советов не решил мою проблему. Я попробовал все это. Я закончил заниматься своим собственным классом, который расширяет класс mx.controls.Label. Реализация ниже. Не стесняйтесь использовать его в своих проектах. Обратите внимание, что вы должны отключить truncateToFit в вашем mxml при использовании этого. В противном случае «нулевая» строка будет добавлена ​​к вашему тексту и усечение не будет сделано.

Код:

package com.feijk.UI {
    import mx.controls.Label;


    /**
     * An extension for mx.controls.Label to truncate the text and show
     * a tooltip with the full-length content. This sub-class is meant to be
     * used when the regular truncateToFit does result in a "null" appendix
     * on the string instead of the "...". In order for this to work, I used
     * the following parameters in my mxml: 
     * 
     *  - truncateToFit = false
     *  - maxWidth = set
     *  - width = set
     * 
     * 
     * @author Tomi Niittumäki // Feijk Industries 2010
     * @NOTE: Feel free to use! :)
     */
    public class FLabel extends Label{

        // define the truncation indicator eg. ...(more) etc.
        private const TRUNCATION_INDICATOR:String = new String("...");

        /**
         * Constructor
         */
        public function FLabel(){
            super();
        }

        /**
         * The overriding method, which forces the textField to truncate
         * its content with the method truncateToFit(truncationIndicator:String)
         * and then supers the tooltip to be the original full-length text.
         */
        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
            super.updateDisplayList(unscaledWidth, unscaledHeight);
            //trace("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!: "+textField.text);
            textField.truncateToFit(TRUNCATION_INDICATOR);
            super.toolTip = text;
        }

    }
}
0 голосов
/ 05 ноября 2009

Если вы работаете с несколькими локалями, убедитесь, что вы добавили en_US в вашу localeChain. Например.: resourceManager.localeChain = ['pt_BR', 'en_US'];

Нашли решение по адресу: http://blog.flexexamples.com/2008/01/26/truncating-text-in-the-flex-label-control-using-the-truncatetofit-property/

Ищите сообщение Леандро

0 голосов
/ 18 апреля 2009

Итак, я добавил свой собственный шрифт, и он прекрасно обрезается без каких-либо проблем. Я не уверен, как вы встраиваете свой шрифт, но этот метод работал для меня. Если вы делаете что-то совершенно другое, укажите это в своем сообщении.

// Cannot name the font as one that already exists!
[Embed(source="Anonymous.ttf", fontFamily="myAnon")]
private var fontA : Class;

[Embed(source="HGRSGU.TTC", fontFamily="myFont")]
private var fontB : Class;

//...I have some code here that switches the font
var obj : Object = truncateMe.getStyle("fontFamily");
if (obj == "myAnon")
  truncateMe.setStyle("fontFamily", "myFont");
else
  truncateMe.setStyle("fontFamily", "myAnon");

<!-- My Label -->
<mx:Label maxWidth="150" truncateToFit="true" id="truncateMe"
    text="Something really long goes here" fontFamily="myFont" fontSize="20"/>
0 голосов
/ 17 апреля 2009

Я только что попробовал ваш пример кода, и он работал нормально. Вы уверены, что это не что-то еще?

...