0

動的に入力されるテキスト フィールドがあります。入力されたテキストがテキスト フィールドに収まらない場合、テキストのサイズが変更されます。HTML タグは、動的に入力されたテキストで正しく機能しますが、テキストのサイズが変更されない場合に限られます。サイズ変更されたテキストでは、HTML タグは完全に無視されます。何か案は?

テキスト フィールドのコード:

    import flash.text.TextFormat;
    import flash.text.Font;
    //
    function setDesc(str:String):void{
      var fmtD:TextFormat;
      var cfmtD:TextFormat = this.desc_txt.getTextFormat()==null ? this.desc_text.defaultTextFormat : this.desc_txt.getTextFormat();
      var sizeD:int = 22;
      desc_txt.htmlText = str;
      while(sizeD>10 && sizeD<23 && desc_txt.textHeight>255){
         sizeD--;
         fmtD = new TextFormat(descFont.fontName,sizeD,0x000000,false, false,false);
         desc_txt.htmlText = str;
         desc_txt.setTextFormat(fmtD);
      } 
}

テキスト フィールドに入力するコード:

    function openDialog(e:MouseEvent){
    dialog_window.doOpen();
      switch(e.currentTarget.name){
         case "btn_structure":
            dialog_window.setTitle("Business Structure:");
            dialog_window.setDesc("This topic discusses the <b>basic</b> structure of the business area.");
         break;
         case "btn_services":
            dialog_window.setTitle("Services Provided:");
            dialog_window.setDesc("This topic provides <i>information</i> about the services offered by the Client Billing Services unit.");
         break;
    }    
} 
4

1 に答える 1

0

while ループ内の最後の 2 行を次のように変更してみてください。

desc_txt.defaultTextFormat = fmtD;
desc_txt.htmlText = str;

html タグと as3 TextFormat クラスの操作について詳しくは、こちらをご覧ください。

編集:

コードの一部を使用してこの簡単な例をセットアップしただけで、テキストの書式設定 (フォントの種類とサイズ) と html タグ (太字と斜体) の両方が問題なく機能しています。

import flash.text.TextField;
import flash.text.TextFormat;

var sizeD:uint = 22;
var desc_txt:TextField = new TextField();
addChild(desc_txt);

var str:String = "This topic <i>discusses</i> the <b>basic</b> structure of the business area. This topic <i>discusses</i> the <b>basic</b> structure of the business area.This topic <i>discusses</i> the <b>basic</b> structure of the business area. This topic <i>discusses</i> the <b>basic</b> structure of the business area.";

var fmtD:TextFormat;
fmtD = new TextFormat("Verdana",sizeD,0x000000,false, false,false);

desc_txt.width=450;
desc_txt.height=150;
desc_txt.wordWrap=true;

desc_txt.defaultTextFormat = fmtD;
desc_txt.htmlText = str;

var maxHeight = 150;

trace(sizeD+" - "+ desc_txt.textHeight);
while(sizeD>10 && sizeD<23 && desc_txt.textHeight>maxHeight)
{
  trace("--> inside while loop");
  sizeD--;
  fmtD = new TextFormat("Verdana",sizeD,0x000000,false, false,false);
  desc_txt.defaultTextFormat = fmtD;
  desc_txt.htmlText = str;

}
trace(sizeD+" - "+desc_txt.textHeight);
于 2012-07-23T16:37:41.090 に答える