有关flash , javascript 的一些小心得
RSS icon Email icon Home icon
  • 解决菜鸟遇到的textField文本,用textFormat改变不了的问题

    今天遇到了一个TextFiled文本改变字体颜色与大小时的可笑问题.

    1.我创建一个TextField文本,代码如下:
    import flash.text.TextField;
    var label:TextField = new TextField();
    label.htmlText = “Hello World…\nHellow”;

    2.我想用一个TextFormat使文本的颜色改变,代码如下:
     import flash.text.TextFormat;
    var labelCss:TextFormat = new TextFormat();
       labelCss.color = 0xff0000;
       labelCss.leading = 5;
       labelCss.font = “Verdana”;

    3.最后我把TextFormat赋给TextField,但我看开发文档时直接使用了Textfield的setTextFormat方法,代码如下:
    label.setTextFormat(labelCss);

    结果label一点反应都没有,后来再看flash手册,看到其中的”defaultTextFormat”属性,原来这个属性才是使用TextFormat的正确方法,
    于是把代码修改成:
    label.defaultTextFormat = labelCss;
    若在使用setTextFormat方法,必须放在label.htmlText=”XXXXXXXX”这句的后面。

    就OK了.这种错误在写AS代码时经常范,flash在这方面也没有一个统一的规范,觉得有点凌乱.最后给出全部代码.

     

    package {
        import flash.display.Sprite;
        import flash.text.TextField;
     import flash.text.TextFormat;

        public class styleSheet extends Sprite {

            public function styleSheet() {
                var labelCss:TextFormat = new TextFormat();
       labelCss.color = 0xff0000;
       labelCss.leading = 5;
       labelCss.font = “Verdana”;
       
                var label:TextField = new TextField();
                label.defaultTextFormat = labelCss;
                label.htmlText = “<body><span class=’heading’>Hello </span>World…\nHellow</body>”;
                addChild(label);
            }
        }
    }