关于文本滚动的属性设置:
hscroll:表示当前水平滚动位置。如果 hscroll
属性为 0,则不能水平滚动文本
水平滚动的单位是像素,而垂直滚动的单位是行。水平滚动以像素计量是因为您通常使用的多数字体都是按比例隔开的;这意味着字符可以有不同的宽度。Flash 按行执行垂直滚动是因为用户通常希望看到一整行文本,而不是一行的局部。即使一行上有多种字体,行的高度也会调整到与使用的最大字体相适合。
maxhscroll:表示 TextField.hscroll 的最大值
例:
this.createTextField("mytext_txt",1,100,100,100,20);
mytext_txt.autoSize=false;
mytext_txt.text="这是一个滚动文本的效果,我们可以看到文本在滚动.";
onEnterFrame = function() {
if(mytext_txt.hscroll < mytext_txt.maxhscroll){
mytext_txt.hscroll ++;
}else {
mytext_txt.hscroll =1;
}
}
测试影片,你将看到一个滚动文本。代码中用了一个onEnterFrame事件,这是每运行一帧就执行一次,这样就形成了一个无限的循环。
scroll:
文本在文本字段中的垂直位置。scroll 属性可用于将用户定向到长篇文章的特定段落,还可用于创建滚动文本字段。可以检索和修改此属性。水平滚动的单位是像素,而垂直滚动的单位是行。
maxscroll:
表示 TextField.scroll 的最大值。
参考上例可以做出垂直方向滚动的文本。但却不能用onEnterFrame事件,为什么呢?因为scroll属性是以行为单位,如果每帧跳一行的话,那就太快了。你可以放一个按钮,让每点一次按钮,文本向上滚动行。这个留给大家自已练习吧。可以实现自动滚动吗?当然可以,留到本节课后练习来说。
TextFormat类:
上面主要介绍了文本框的的一些属性,而文本内容的属性比如字体,颜色,对齐方式等就要借助TextFormat类来实现。使用 TextFormat 类可以为文本字段创建特定的文本格式。您可以将文本格式应用于静态文本字段和动态文本字段。必须使用构造函数 new TextFormat()
创建 TextFormat 对象,然后设置其属性,再用文本框的setTextFormat()方法来使用这些属性。
1.创建TextFormat对象:
var myformat:TextFormat = new TextFormat();这就创建了一个叫myformat的TextFormat对象。
2.设置TextFormat对象的属性:
myformat.bold = true;设置了myformat的bold(粗体字)属性.
3.文本框调用setTextFormat()方法:
mytext_txt. setTextFormat(myformat);这样文本框就调用了myformat中的属性设置,即文本框的内容将以粗体字显示。
例:
var myformat:TextFormat = new TextFormat();
myyformat.bold=true;this.createTextField"mytext_txt",1,100,100,100,20);
mytext_txt.autoSize=true;mytext_txt.text="设置了粗体";
mytext_txt.setTextFormat(myformat);
测试影片,可以看到文本框中的文字是粗体的。
TextFormat对象的属性:
align:指示段落的对齐方式的字符串。您可以将此属性应用于静态文本和动态文本。下面的列表显示此属性的可能值:
* "left" -- 段落为左对齐。
* "center" -- 段落居中。
* "right" -- 段落为右对齐。
* "justify" -- 段落为两端对齐。(Flash Player 8 中添加了此值。)
默认值是 null,它指示该属性未定义。
blockIndent:
以磅为单位指示块缩进的数字。块缩进应用于整个文本块,即文本的所有行。而普通缩进 (TextFormat.indent) 只影响各段的第一行。如果此属性为 null,则 TextFormat 对象不指定块缩进。
bold:
一个布尔值,指示文本是否为粗体字。默认值是 null,它指示该属性未定义。如果值为 true,则文本为粗体字。
color:指示文本的颜色。
font:
使用此文本格式的文本的字体名称,以字符串形式表示。
indent:
指示从左边距到段落中第一个字符的缩进的整数。正值指示普通缩进。您可以使用负值,但只可在左边距大于 0 时进行负缩进。若要将边距设置为大于 0,请使用 indent 属性或 TextFormat 对象的 blockIndent 属性。默认值是 null,它指示该属性未定义。
italic一个布尔值,指示使用此文本格式的文本是否为斜体
leading:一个整数,表示以像素为单位的行间垂直距离(称为"行距")。
leftMargin:段落的左边距,以磅为单位
letterSpacing:字间距
rightMargin:段落的右边距,以磅为单位。
size:文字的大小
underline:一个布尔值,指示使用此文本格式的文本有下划线 (true) 还是没有下划线 (false)
下面我们来做个练习:滚动文本的制作
新建一flash文档,导入一图片,用为背影,居中放好
新插入一层,命名为action.开始写代码:
1、横向滚动:
首先创建一个TextFormat对象,然后设置文本框要用到的属性.
创建文本框,并设置其autoSize属性为false,不让其缩放大小.设置文本框的text属性,前后输入一定数量空格,以避免滚动时出现不连惯.
用onEnterFrame事件实现滚动,方法参见上面例句
2、纵向滚动:
首先创建一个TextFormat对象,然后设置文本框要用到的属性.
创建文本框,并设置其autoSize属性为false,不让其缩放大小.设置文本框的text属性,第一行前和最后一行后,插入一定数量”\r”,以避免滚动时出现不连惯.
创建一函数,使文本滚动,方法参考横向滚动
用:
var 随便取个变量名 = setInterval(刚建的函数名,1000);
实现滚动.这一句的意思是每隔1000毫秒调用一次函数,后面课程将详细介绍
3、3D字效果
原理是创建两个文本框,内容相同,字的颜色不同,文本框的位置略微错开2个象素左右.
作业:制作滚动文本
附完整代码:
建议大家自已完成本练习,不要看这个代码,实在有困难时,只可参考这个代码.坚决反对直接复制本代码,那样就没意思了,对你学习AS一点好处都没有.
var myformat:TextFormat = new TextFormat();
myformat.bold = true;
myformat.size = 30;
myformat.color = 0xff0000;
this.createTextField("mytext_txt",1,200,50,200,50);
mytext_txt.autoSize=false;
mytext_txt.text="
在花好月圆之夜,祝各位坛友中秋快乐!
";
mytext_txt.setTextFormat(myformat);
onEnterFrame = function(){
if(mytext_txt.hscroll<mytext_txt.maxhscroll){
mytext_txt.hscroll ++;
} else {
mytext_txt.hscroll =1;
}
}
var myformat1:TextFormat = new TextFormat();
myformat1.size = 18;
myformat1.color = 0xf4f44f;
this.createTextField("mytext1_txt",2,100,150,150,150);
mytext1_txt.autoSize=false;
mytext1_txt.text="\r"+"\r"+"\r"+"\r"+"\r"+"\r"+"明月几时有?"+"\r"+"把酒问青天"+"\r"+"不知天上宫阙,"+"\r"+"今昔是何年";
mytext1_txt.text +="\r"+"我欲乘风归去,"+"\r"+"又恐琼楼玉宇,"+"\r"+"高处不胜寒。"+"\r"+"起舞弄清影,"+"\r"+"何似在人间.";
mytext1_txt.text +="\r"+"\r"+"转诸阁,"+"\r"+"低倚户,"+"\r"+"照无眠."+"\r"+"不应有恨,"+"\r"+"何事长向别时圆.";
mytext1_txt.text +="\r"+"人生悲欢离合,"+"\r"+"月有阴晴圆缺,"+"\r"+"此事古难全."+"\r"+"但愿人长久,"+"\r"+"千里共婵娟."
mytext1_txt.text +="\r"+"\r"+"\r"+"\r"+"\r"+"\r"+"\r"+"\r"
mytext1_txt.setTextFormat(myformat1);
function gd(){
if(mytext1_txt.scroll<mytext1_txt.maxscroll){
mytext1_txt.scroll ++;
} else {
mytext1_txt.scroll =1;
}
}
var ksgd = setInterval(gd,1000);
var myformat2:TextFormat = new TextFormat();
myformat2.bold = true;
myformat2.size = 30;
myformat2.color = 0x988E81;
this.createTextField("mytext2_txt",3,200,300,200,50);
mytext2_txt.autoSize="center";
mytext2_txt.text="花好月圆贺中秋";
mytext2_txt.setTextFormat(myformat2);
var myformat3:TextFormat = new TextFormat();
myformat3.bold = true;
myformat3.size = 30;
myformat3.color = 0x430FBD;
this.createTextField("mytext3_txt",4,202,300,200,50);
mytext3_txt.autoSize="center";
mytext3_txt.text="花好月圆贺中秋";
mytext3_txt.setTextFormat(myformat3);