2010-02-24 33 views
0

这是一个非常奇怪的问题。我创建了我自己的CustomTextField类,用于嵌入字体并设置defaultTextFormat。这工作非常好,但由于某种原因,当我尝试在除了父应用程序之外的任何模块中创建新的CustomTextField时,文本文本仅有时显示。Flex模块和自定义文本字段

这里是我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; 
     } 

    } 
} 

这很奇怪它怎么有时工作,有时不......或许有一些奇怪的事情与模块?

回答

2

好的,这一个花了我很长时间才弄清楚。我终于通过使用下面的代码得到它的工作:

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

在模块加载项。

谢谢!

1

是的,这几乎肯定是一个模块问题。我以前见过类似的东西。我在寻找问题的答案,但我最初的想法是设置

moduleLoader.applicationDomain = ApplicationDomain.currentDomain

的另一个问题是,如果你装在同一个模块的两倍。如果是这样,您需要通过添加file.swf?<randomNumber>或类似的东西来使url唯一。

+0

我试过这两个,但仍然遇到问题。如果你确实设法找出答案,它会非常感激! – Hanpan

相关问题