2009-04-14 9 views
0

J'ai un certain nombre d'étiquettes dans mon application Flex qui ont la propriété "truncateToFit" sur true. Le problème est que, au lieu d'afficher '...' à la fin de tout texte tronqué, il affiche null.Flex/Actionscript truncateToFit sur le composant d'étiquette

Si le texte de mon libellé était: "Bonjour Stackoverflow!" Je pourrais attendre mon étiquette pour ressembler à ceci:

"Bonjour Stackov ..."

Au contraire, il affiche

"Bonjour Stackovnull"

Toute aide serait utile!

Example of how truncation should look

Edit: - Code Exemple:

<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> 
+0

Veuillez ajouter le code source exactement tel qu'il est (cela semble l'un de ceux désactivés par des erreurs). Le texte du Label est-il une concaténation de deux chaînes? Aussi, avez-vous réglé 'maxWidth'? – dirkgently

+0

Ajout de code - Je suis assez sûr que cela n'a rien à voir avec mon code. Cela semble être une question de config peut-être? –

+0

L'exemple de code fourni ne fonctionne-t-il pas de votre côté? Un copier-coller direct du code ci-dessus fonctionne comme il se doit. Peut-être développer plus sur votre scénario particulier plus? – nevets1219

Répondre

2

Ha ha! J'ai trouvé la solution. Désolé les gars - C'était probablement mon manque d'information qui rendait difficile pour vous les gars de déboguer pour m :(

Donc, de toute façon - Il s'est avéré que j'avais un fichier resourceModule externe que mon application chargée pour obtenir des données de langue localisées, etc from - Ce fichier n'incluait pas les données concernant le texte à afficher pour la troncature (c'est-à-dire '...') et donc il affichait 'null' J'ai ajouté ces données à la ressource swf et tout fonctionne comme prévu .

Merci un million pour essayer de me aider les gars,.)

0

Je viens d'essayer votre code d'exemple et il a bien fonctionné. Es-tu sûr que ce n'est pas autre chose?

0

Je suis donc allé incorporer une police de caractères et elle tronque bien sans problème particulier. Je ne sais pas comment vous intégrez votre police, mais cette méthode a fonctionné pour moi. Si vous faites quelque chose de complètement différent, veuillez le spécifier dans votre message.

// 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

Merci d'avoir testé cela. Je me demande si cela a quelque chose à voir avec la police que j'utilise? Bien que je sache qu'il a un caractère d'arrêt complet: s –

+0

Si cela ne vous dérange pas de partager la police, d'autres peuvent essayer de comprendre si le problème est spécifique à votre fin ou non, mais je sais que cette méthode fonctionne (au moins avec ces deux polices que j'utilise). Vous pouvez probablement contourner le problème en codant manuellement le comportement dans (je pense). – nevets1219

0

J'ai eu un combat énorme avec cette question aujourd'hui (3 h), ce qui est beaucoup trop pour un petit problème de ce genre. Quoi qu'il en soit, aucun des conseils ci-dessus résolu mon problème. J'ai tout essayé. J'ai fini par faire ma propre classe, qui étend la classe mx.controls.Label. La mise en œuvre est ci-dessous. N'hésitez pas à l'utiliser dans vos projets. Veuillez noter que vous devez désactiver truncateToFit dans votre mxml lorsque vous utilisez celui-ci. Sinon, la chaîne "null" sera ajoutée à votre texte et aucune troncation ne sera faite.

code:

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; 
     } 

    } 
} 
Questions connexes