styleSheet和TextFormat类似,也是用来定义文本格式的,二者实现的效果也差不多。但是,styleSheet和TextFormat之间,是存在兼容冲突的,设置了styleSheet的文本,将无法再使用TextFormat类,否则编译时会产生报错信息。
那么,这两者之间的区别是什么呢,我大致归纳了下,有以下几点:
(1) styleSheet只能对HtmlText使用,如果没有设置该属性则无法使用。TextFormat则不受该限制影响。
(2) styleSheet可以通过修改外部CSS文件来变更文字格式,不用重新编译生成的SWF文件,这个也是styleSheet最大的优势。
(3) 设置了styleSheet的文本字段是不可以再编辑的。所以如果是一个输入文本的话,应该避免使用styleSheet。
由上也可以看到,CSS虽然说可以在Flash文件中创建,但我觉得,只有外部加载的CSS文件才有意义,否则,真的体现不出styleSheet的优势了。同时,如果你要应用styleSheet的话,建议先看下帮助,因为Flash支持的styleSheet样式元素并不多。
下面我介绍下如何加载外部CSS文件,首先,我们要创建一个CSS文件,CSS文件我就完全不懂了,所以只好抄袭一段代码来,大家把下面这段代码复制到文本文件,然后命名为example.css,和Flash文件放在同一个目录下:
p {
font-family: Times New Roman, Times, _serif;
font-size: 14;
}
h1 {
font-family: Arial, Helvetica, _sans;
font-size: 20;
font-weight: bold;
}
.bluetext {
color: #0000CC;
}
如果正确套用该CSS文件,文本会呈现蓝色字体。然后我们打开Flash,写入AS代码如下:
var loader:URLLoader = new URLLoader();
var req:URLRequest = new URLRequest("example.css");
loader.load(req);
loader.addEventListener(Event.COMPLETE, onLoaded);
function onLoaded(event:Event) {
var sheet:StyleSheet = new StyleSheet(); //定义styleSheet实例
sheet.parseCSS(loader.data); //解析外部CSS文件
var myText:TextField = new TextField();
myText.styleSheet = sheet; //调用styleSheet实例
myText.htmlText = "<span class='bluetext'>测试文本</span>"; //采用styleSheet
addChild(myText);
}
最后我再做点补充说明:
(1) 首先要创建styleSheet实例,然后用parseCSS()方法解析读取的外部CSS文件
(2) 必须在设置htmlText属性之前应用样式表,否则CSS样式是不会生效的。
(3) 在htmlText文件中调用CSS的方法和正式网页中相同。