云南师范大学计算机科学与信息技术学院教育技术学——杨金平
trace(\
trace(\
第10章 动态文本
在制作游戏的时候,有时需要一个文本框来记录用户的游戏得分,这个分数是根据游戏情况动态改变的。这时候,我们就需要用到动态文本。
动态文本与输入文本的区别在于它不能直接接受用户输入。 但是,动态文本可以用来显示不同样式和字体的文本。 10.1 动态文本
和输入文本一样,使用文本工具可以创建动态文本框,只需在属性面板中选择“动态文本”即可 要让动态文本框动态地显示文本,就需要在属性面板中为其设置变量名。将动态文本的变量名设为
myDynamicText。在Flash影片播放时,只需改变动态文本变量的值,就可以改变动态文本框中显示的文本。 动态文本有3种基本格式:单行、多行和多行不换行,它没有输入文本的密码格式。 属性面板中间有3个按钮,其中:
= :可选,它决定了是否可以对动态文本框中的文本执行选择、复制、剪切等操作,按下表示可选。如果是输入文本,它是默认按下并且不可改变的,因为输入文本一定是可选的。
= :将文本呈现为HTML,它决定了动态文本框中的文本是否可以使用HTML格式,即使用HTML语言为文本设置格式。
= :在文本周围显示边框,它决定了是否在动态文本框周围显示边框。
怎样才能让动态文本框显示需要的文本呢?如下所示的脚本即在变量名为myDynamicText的动态文本框中显示“Welcome to ActionScript!”:
myDynamicText = \上面的脚本是加在动态文本所在的时间轴上的。
动态文本的使用虽然很简单,但是用它可以做许多事情。 10.2 HTML格式
HTML即超文本置标语言,它是网页格式的一种显示规范。在浏览网页时,浏览器通过解读HTML标记将网页中的各种元素显示成需要的样式。在Flash中可以使用HTML来设置动态文本的格式。要使用HTML,首先需要按下属性面板中的 按钮。在Flash中使用HTML标记为动态文本设置格式的ActionScript如下所示: myDynamicText = \粗体. \
myDynamicText += \斜体. \
myDynamicText += \下划线. \
myDynamicText += \颜色. \
myDynamicText += \字体. \
myDynamicText += \字号. \
myDynamicText += \http://www.sina.com.cn& #39;>A HREF:超链接. \
49
云南师范大学计算机科学与信息技术学院教育技术学——杨金平
Flash中使用的并不是完整的HTML,而只是HTML中的一些标记,使用这些标记可以轻松地为动态文本设置各种格式。
Flash MX中可用的所有HTML标记如下所示: = :粗体 = :斜体 = :下划线
= :设置字体 = :设置字号 = :网页超链接 = :定义段落 = :换行
10.3 从文本文件中获取变量
通过ActionScript可以调用Flash影片外部文本文件中的变量。从外部文件中获取变量的方法非常有用,它可以在不改变Flash文件的基础上对Flash影片的内容作出修改。例如要用Flash制作一个天气预报动画,如果每天都对Flash文件进行修改就太麻烦了。而使用外部变量就只需要对文本文件作出修改。 要从外部文件中获取变量需要用到的命令是loadVariables,如下所示: loadVariables(\
其中,第1个参数是Flash影片要获取变量的文件位置,第2个参数是文本变量要加载到的位置,可以是_root,也可以是某个影片剪辑或深度级别。Flash将来自外部文件中的变量值加载到与指定位置中具有相同变量名的文本字段中。
使用loadVariables命令要注意的是,指定的文本应以Flash影片中的文本变量名开始,否则不能被加载。本例weather.txt中的内容如下所示: myDynamicText=Today is Friday,it's rainy!
打开文件loadVariables.fla,在主时间轴中有一个动态文本框,其变量名与weather.txt中的文本字段相同,当运行前面的脚本时,该文本框中显示: Today is Friday,it's rainy!
如果在文本文件中为变量指定多行字符串,Flash将自动识别换行符,从而实现自动换行。 您可以修改文本文件中的内容,Flash中动态文本显示的内容也将作出相应的改变。 10.4 练习:滚动新闻
(1)新建一个Flash文档并保存。
(2)在场景中绘制一个动态文本框,在属性面板中将其变量名设为text。
(3)选中文本框,按F8键将其转换为影片剪辑元件,在属性面板中将该影片剪辑实例命名为news。 (4)选中影片剪辑实例news,打开其动作面板,在其中添加如下ActionScript: onClipEvent (load) {
loadVariables(\v = 0; }
onClipEvent (enterFrame) { v++;
if (v == 1) {
text = text.substr(1, text.length-1)+text.substr(0, 1);
50