2.1 文字特效(2)
2.文本格式对象
能对文本进行控制的还有文本格式对象。这个对象主要控制的是具体的文本格式,而文本框对象主要控制的是框的格式。文本格式对象的创建方法如下:
new TextFormat([font, [size, [color, [bold, [italic, [underline, [url, [target, [align, [leftMargin, [rightMargin, [indent, [leading]]]]]]]]]]]]])
上面的内容并不是每项都要一一设置的,如果不想设置该项而使用默认值的话,可以直接用逗号跳过,如果某项后面的内容全部都用默认值,则全部可以不写了。下面对这些参数做一些说明:
font
它用一个字符串的形式来描述字体名称,这个名称要与真实字体名称完全相同。对于中文字体,这项内容无法起作用,这也是为什么在图2-3的效果中,中文字体并没有被设置的原因。不知这是不是Flash MX的Bug?
size
它是表示字体的点阵大小。这项值必须设置,否则字的尺寸将为0!字将无法显示。
color
字体的颜色值,一般来说是按0x######的方式进行书写的,比如红色是0xFF0000,黄色是0xFFFF00,默认是黑色。
bold
字体加粗,是一个布尔变量,为true时表示加粗,为false时表示不加粗,默认是false。
Italic
字体变斜体,布尔变量,默认为false。
underline
文字下划线,布尔变量,默认为false。
url
超级链接。如果为空串,则不会有超级链接的功能。
target
目标窗口。这是设置有超级链接时,打开的窗口是自己(_self)、新窗口(_blank)、父亲窗口(_parent),或者是最顶层(_top)。默认值是_self。
align
对齐方式。等于left,就是靠左对齐,等于right就是靠右对齐,等于center就是居中对齐。这个属性可以与文本框的autoSize属性进行联合设置。
leftMargin
左边界。它表示第一个文本字符离左边框的距离,用点数来表示,取值范围从0~720。
rightMargin
右边界。它表示最后的文本字符离右边框的距离,用点数表示,取值范围从0~720。
Indent
缩进方式。它表示从左边界到第一个字符缩进的整数点数值,取值从–720~720。
leading
行距。它表示每行字之前的间隔点数,取值范围从–360~720。
上面的这些参数都是文本格式的属性,都可以通过相应的方式来对它进行设置。当然了,字符的属性不止这些,还有几个很有用的属性函数:
TextFormat.tabStops
它是用来控制按Tab键时所能移动的空格数,默认值是4。
TextFormat.blockIndent
定义整个文本块的左边缩进字数。块缩进应用于整个文本块,即文本的所有行。相反,普通缩进 (TextFormat.indent) 只影响各段的第一行。如果该属性为 null,则 TextFormat 对象没有指定块缩进。
TextFormat.bullet
用来控制文本作为列表形式的出现,它是一个布尔变量。如果为true,那么文本前面就会有一个项目符号。如果对一个文本同时使用了数种不同的文本格式,那么不管这个属性是否为true,都不显示项目号。
在实际使用过程中,可以先进行创建,然后再修改某一项或者数项的内容,最后用TextField.setTextFormat (textFormat)来实施相应的文本格式。
它的实施有三种方式:
TextField.setTextFormat (textFormat)
TextField.setTextFormat (index, textFormat)
TextField.setTextFormat (beginIndex, endIndex, textFormat)
这三种实质是差不多的,第一种已经在前面的程序中用到,第二种使用方法是让这个文本串的第“index”个字符使用这里定义的格式,第三种方法就是从“beginIndex”到“endIndex”的字符使用定义的格式。这里的index,beginIndex,endIndex取值范围从0到TextField.length–1。
在看过这么多属性之后,我们来看看它们对效果可以做哪些变化:
userFonts = TextField.getFontList();
userFonts.sort();
_root.createEmptyMovieClip("fontList", i);
for (i=0; i<8; i++) {
_root.fontList.createTextField("userText"+i, i, 30, i*50, 300, 50);
_root.fontList["userText"+i].text = userFonts[i];
_root.fontList["userText"+i].border = true;
_root.fontList["userText"+i].borderColor = 0xFF0000;
_root.fontList["userText"+i].background = true;
_root.fontList["userText"+i].backgroundColor = 0xFFFF00;
_root.fontList["userText"+i]._height = 40;
displayStyle = new TextFormat(userFonts[i], 18);
_root.fontList["userText"+i].setTextFormat(1, 50, displayStyle);
displayStyle_begin_char = new TextFormat(userFonts[i], 30);
displayStyle_begin_char.align = "right";
_root.fontList["userText"+i].setTextFormat(0, displayStyle_begin_char);
}
上面的程序去掉了鼠标控制部分,仅显示字体控制部分。从图2-5中可以看出,每个字的间距拉大了,这是调整_height属性的结果;文本框的边框线变成了红色,这是通过设置borderColor属性的方式实现的;字体的第一个字符也做了放大,这是对第一个字符设置了不同的大小而产生出来的结果。通过这些设置,可以让程序完成一些以前无法完成的功能,比如文档的下标的显示。这个在以前根本无法解决,但现在可以通过设置相应字符的字体大小得到解决。虽然还没有达到像排版软件那么方便,但至少可以解决了。对于文档中的上标,虽然也可以采用这种方式,但实现起来比较麻烦,在这里就不讲解了,有兴趣的朋友可以自己试试。
|