2010-02-24 5 views
0

Ceci est vraiment étrange. J'ai créé ma propre classe CustomTextField que j'utilise pour intégrer la police et définir le defaultTextFormat. Cela fonctionne très bien, mais pour une raison quelconque, lorsque j'essaie de créer un nouveau CustomTextField dans n'importe quel module, à l'exception de l'application parente, le texte ne s'affiche que de temps en temps.Flex Modules et champ de texte personnalisé

Voici ma classe CustomTextField:

package uk.package.text 
{ 
    import flash.text.AntiAliasType; 
    import flash.text.Font; 
    import flash.text.TextField; 
    import flash.text.TextFieldAutoSize; 
    import flash.text.TextFormat; 

    public class CustomTextField extends TextField 
    { 

     [Embed(source='../assets/fonts/Arial.ttf',fontName='CustomFont',fontWeight='regular', 
      unicodeRange='U+0020-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E,U+0080-U+00FF,U+0100-U+017F,U+0400-U+04FF,U+0370-U+03FF,U+1E00-U+1EFF', 
      mimeType='application/x-font-truetype' 
      )] 
     public static var MY_FONT:Class; 
     [Embed(source='../assets/fonts/Arial Bold.ttf',fontName='CustomFont',fontWeight='bold', 
      unicodeRange='U+0020-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E,U+0080-U+00FF,U+0100-U+017F,U+0400-U+04FF,U+0370-U+03FF,U+1E00-U+1EFF', 
      mimeType='application/x-font-truetype' 
      )] 
     public static var MY_FONT_BOLD:Class; 

     public static const DEFAULT_FONT:String = "Arial"; 
     public static const DEFAULT_TEXT_COLOUR:int = 0x000000; 
     public static const DEFAULT_TEXT_SIZE:int = 14; 

     private var _tf:TextFormat = new TextFormat(DEFAULT_FONT, DEFAULT_TEXT_SIZE, DEFAULT_TEXT_COLOUR); 

     public function CustomTextField():void 
     { 
      var CustomFont:Font = new MY_FONT(); 
      _tf.font = CustomFont.fontName; 
      _tf.size = 16; 

      embedFonts = true; 
      antiAliasType = AntiAliasType.ADVANCED; 
      defaultTextFormat = _tf; 
      autoSize = TextFieldAutoSize.LEFT; 
     } 

     public override function set htmlText(value:String):void 
     { 
      super.htmlText = value; 
      setTextFormat(_tf); 
     } 

     public function get textFormat():TextFormat 
     { 
      return _tf; 
     } 

    } 
} 

Il est étrange que parfois cela fonctionne et parfois non ... peut-être il va quelque chose d'étrange avec les modules?

Répondre

2

Ok, celui-ci m'a pris des âges pour comprendre. J'ai finalement réussi à travailler en utilisant le code suivant:

preinitialize="moduleLoader.moduleFactory=Application.application.systemManager;" 

Dans le chargeur de module.

Merci!

1

oui c'est presque définitivement un problème de module. J'ai déjà vu quelque chose de similaire. Je cherche la réponse, mais ma pensée initiale est de mettre

moduleLoader.applicationDomain = ApplicationDomain.currentDomain

Une autre question est de savoir si vous chargez le même module deux fois. Si c'est le cas, vous devez rendre l'URL unique en ajoutant file.swf?<randomNumber> ou quelque chose de similaire.

+0

J'ai essayé les deux, mais j'éprouve toujours le problème. Si vous parvenez à balayer la réponse, ce serait très reconnaissant! – Hanpan

Questions connexes