参考上例可以做出垂直方向滚动的文本。但却不能用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.autoSize=true;mytext_txt.text=\设置了粗体\mytext_txt.setTextFormat(myformat);
测试影片,可以看到文本框中的文字是粗体的。 TextFormat对象的属性:
align:指示段落的对齐方式的字符串。您可以将此属性应用于静态文本和动态文本。下面的列表显示此属性的可能值:
* \段落为左对齐。 * \段落居中。 * \段落为右对齐。
* \段落为两端对齐。(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.autoSize=false;
mytext_txt.text=\在花好月圆之夜,祝各位坛友中秋快乐! \mytext_txt.setTextFormat(myformat); onEnterFrame = function(){
if(mytext_txt.hscroll mytext_txt.hscroll =1; } } var myformat1:TextFormat = new TextFormat(); myformat1.size = 18; myformat1.color = 0xf4f44f; this.createTextField(\mytext1_txt.autoSize=false; mytext1_txt.text=\明月几时有?\把酒问青天\不知天上宫阙,\今昔是何年\ mytext1_txt.text +=\我欲乘风归去,\又恐琼楼玉宇,\高处不胜寒。\起舞弄清影,\何似在人间.\ mytext1_txt.text +=\转诸阁,\低倚户,\照无眠.\不应有恨,\何事长向别时圆.\ mytext1_txt.text +=\人生悲欢离合,\月有阴晴圆缺,\此事古难全.\但愿人长久,\千里共婵娟.\ mytext1_txt.text +=\mytext1_txt.setTextFormat(myformat1); function gd(){ if(mytext1_txt.scroll 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(\3,200,300,200,50); mytext2_txt.autoSize=\ 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.autoSize=\ mytext3_txt.text=\花好月圆贺中秋\mytext3_txt.setTextFormat(myformat3); 第三节 事件与方法 文本框的事件 onChanged事件:在文本字段的内容发生更改时调用。在文本框中的内容发生改变时就会触发。比如在输入文本中输入或删除一个字符时都会触发这个事件。 例:this.createTextField(\this.createTextField(\myinputtext_txt.autoSize = false; myinputtext_txt.border = true; myinputtext_txt.type = \ var myformat:TextFormat = new TextFormat(); myformat.bold=true; myformat.color=0xff0000; myformat.size=26; mytext_txt.autoSize=true; mytext_txt.wordWrap=true; myinputtext_txt.onChanged = function(){ mytext_txt.text = myinputtext_txt.text; mytext_txt.setTextFormat(myformat); } 这个例子,创建了两个文本框,其中一个是输入文本。分别设置了属性。然后用onChanged 事件,在输入框中输入文本的同时,文本显示在别一文本框中。每输入一个字,输入文本内容就发生了改变,从而触发了onChanged事件,而执行将文本显示在另一文本框中的任务。 onKillFocus 事件:在文本字段失去键盘焦点时调用。文本框的焦点,就是说光标。当文本框失去光标时,就会触发onKillFocus事件。 例:this.createTextField(\this.createTextField(\myinputtext_txt.autoSize = false; myinputtext_txt.border = true; myinputtext_txt.type = \ var myformat:TextFormat = new TextFormat(); myformat.bold=true; myformat.color=0xff0000; myformat.size=26; mytext_txt.autoSize=true; mytext_txt.wordWrap=true; myinputtext_txt.onChanged = function(){ mytext_txt.text = myinputtext_txt.text; mytext_txt.setTextFormat(myformat); } myinputtext_txt.onKillFocus = function(){ trace(\输入框已失去光标,无法继续输入.\} 本例还是上例的代码只是在后加了一个onKillFocus事件函数。运行时在输入框中输几个字后,点击显示文本的的文本框,这时输入文本将失去焦点,从而解发onKillFocus事件。出现失去光标的提示。 onScroller 事件:在某一个文本字段的 scroll 属性发生更改时调用。TextField.onScroller事件处理函数通常用于实现滚动条。滚动条通常有一个缩略图或其它指示器,显示文本字段中的当前水平或垂直滚动位置。使用鼠标和键盘可以浏览文本字段,这会导致滚动位置发生更改。如果由于用户交互而导致滚动条位置发生更改,滚动条代码需要获得通知,这就是使用 TextField.onScroller的目的。 onSetFocus 事件:在文本字段接收键盘焦点时调用。 文本框的方法 getFontList() 方法:以数组的形式返回播放器的主机系统上的字体名称。(此方法不返回当前加载的 SWF 文件中所有字体的名称。)这些名称的类型为 String。此方法是全局 TextField 类的静态方法。在调用此方法时,不能指定文本字段实例。 var font:Array = new Array(); font = TextField.getFontList(); trace(font); 测试影片,你将看到,你的windows目录下fonts文件夹中的文件名称给列出来了。 getDepth() 方法:返回文本字段的深度。 getNewTextFormat()方法:返回一个 TextFormat 对象,该对象包含文本字段的文本格式对象的一个副本。 getTextFormat()方法:返回一个字符、一段字符或整个 TextField 对象的 TextFormat 对象。 用法:my_textField.getTextFormat():返回一个 TextFormat 对象,该对象包含文本字段中所有文本的格式设置信息。 my_textField.getTextFormat(开始处):返回一个 TextFormat 对象,该对象包含 开始处到结束时文本字段的文本格式的一个副本。 my_textField.getTextFormat(开始处,结束处):返回一个TextFormat对象,该对象包含从 开始处 到 结束处 范围内文本的格式设置信息。 removeTextField()方法:删除文本字段。只能对使用createTextField() 创建的文本字段 执行此操作。 replaceSel()方法:使用新的字符替换当前所选内容。使用当前默认字符格式和默认段落格式,在当前所选内容的所在位置插入文本。 用法:my_textField.replaceSel(新字符); 可以使用 replaceSel() 方法插入和删除文本,而不破坏其余文本的字符和段落格式。 必须使用 Selection.setFocus() 将焦点放置在字段上才能发布此命令。 replaceText()方法:在指定的文本字段中,用新字符替换由 开始处 和 结束处 参数所指定的一段字符。 用法:my_textField.replaceSel(开始处,结束处,新字符); setTextFormat()方法:将 textFormat 参数指定的文本格式应用于文本字段中的某些文本或全部文本。textFormat 必须是一个指定需要的文本格式更改的 TextFormat 对象 用法:setTextFormat(开始处,结束处,textFormat对象);如果没有开始处和结束处,格式将运用于整个文本。 第四节 字符串 字符串是String类的一个实例。它用于操作基元字符串值类型的方法和属性。 创建字符串:在AS中可以用new来创建字符串对象: var mystring:String = new String(); mystring = \我创建了一个字符串\ 创建字符串后,就可以操作其方法和属性了。 length属性:字符串的字符数。因为所有字符串索引都是从零开始的,所以任何字符串 x 的最后一个字符的索引都是 x.length – 1。 例:var mystring:String = new String(); mystring = \我创建了一个字符串\trace(mystring.length); 测试时,我们可以看到输出是:9。 方法: charAt() 方法:返回字符串中括号中指定的字符。 例:var mystring:String = new String(); mystring = \我创建了一个字符串\a = mystring.charAt(8); trace(a); 输出结果为:“串”。这里可以看出,字符串中最后一个字符的索引是字符串的长度(字符数)-1。 concat()方法:这个方法可以连接两个字符串,产生一个新字符串,而原字符串不发生变化。 例:var mystring:String = new String(); mystring = \我创建了一个字符串\ var newstring:String = mystring.concat(\又连接了一段字符\trace(newstring); 输出结果:\我创建了一个字符串,又连接了一段字符\。 indexOf()方法:这个方法可实现一个查找功能。 indexOf(要查找的值,位置)它将从位置处搜索字符串,并返回找到的字符的位置。如果没有找到,则返回-1.如果没有指定位置,那么将从字符串开头开始查找。 例:var mystring:String = new String(); mystring = \我创建了一个字符串\var a = mystring.indexOf(\个\