在Flash 5中文本框只能在设计阶段创建,而在Flash MX中,我们可以使用动作脚本在运行期动态创建。在Flash MX的动作脚本语言中新增了两个对象:TextField(文本框)对象和TextFormat(文本格式)对象。使用TextField对象可以动态创建文本,使用TextFormat对象可以动态设置化文本框中文本的格式。
动态文本框和输入文本框都是动作脚本语言的TextField(文本框)对象的实例。在创建一个文本框时,可以在属性面板中赋予它一个实例名。这样,我们就可以在动作脚本语句中通过实例名来设置、改变和格式化文本框和它的内容。TextField对象拥有与MovieClip(电影剪辑)对象相同的属性和方法,使用这些属性和方法可以设置、选取和管理文本。
下面给大家介绍使用动作脚本动态创建文本框、动态设置文本框属性、动态格式化文本框中的文本和使用文本框事件控制文本框的方法。
文章末尾给出整理好的TextField和TextFormat对象的属性和方法的列表,供大家参考查阅。
一、动态创建文本框
使用MovieClip对象的createTextField(创建文本框)方法创建新的空文本框,作为调用该方法的电影剪辑的子对象。使用removeTextField(删除文本框)方法可以删除用createTextField方法创建的文本框,但它不能删除在时间轴中放置的文本框。
二、动态设置文本框属性
使用动作脚本设置文本框的属性,必须给文本框分配实例名。如果是用文本工具在编辑区中创建文本框,可以用属性面板设置实例名。如果是用脚本动态创建文本框,可以把实例名作为一个参数,用createTextField方法创建。
三、动态设置文本格式
使用动作脚本语言的TextFormat(文本格式)对象可以设置文本框的属性。TextFormat对象合并了字符和段落格式信息。字符格式信息描述单个字符的外观:字体名、字体大小、字符颜色和相关的URL。段落格式信息描述段落的外观:左边界、右边界、首行缩进、左对齐、右对齐、居中。
四、用文本框事件触发动作脚本
我们可以使用动作脚本来俘获文本框发生的事件。例如,可以确定用户是否修改了文本框的文本或滚动了文本。通过编写脚本语句,使用这些事件来触发脚本运行。可以俘获的文本框事件包括:onChanged和onScroller。
五、TextField和TextFormat对象的属性和方法列表
1.TextField对象的属性和方法
2.TextFormat对象的属性和方法
一、动态创建文本框
使用MovieClip对象的createTextField(创建文本框)方法创建新的空文本框,作为调用该方法的电影剪辑的子对象。使用removeTextField(删除文本框)方法可以删除用createTextField方法创建的文本框,但它不能删除在时间轴中放置的文本框。
创建文本框后,可以使用TextField对象来设置文本框的属性。如果不设置文本框的属性,新的文本框将接受下面所列的一组默认属性:
type = "dynamic"
border = false
background = false
password = false
multiline = false
html = false
embedFonts = false
variable = null
maxChars = null
创建文本框之后,就可以使用TextFormat对象来格式化文本框中的文本。创建一个新的TextFormat对象,并把它作为一个参数,传递给TextField对象的setTextFormat(设置文本格式)方法。用createTextField方法创建的文本框接受下列默认TextFormat对象属性:
font = "Times New Roman"
size = 12
textColor = 0x000000
bold = false
italic = false
underline = false
url = ""
target = ""
align = "left"
leftMargin = 0
rightMargin = 0
indent = 0
leading = 0
bullet = false
tabStops = [] (empty array)
创建动态文本框的操作步骤如下:
1.选择要添加动作的帧、按钮或电影剪辑。
2.如果动作面板没有打开,选择Window>Actions,打开动作面板。
3.在动作工具箱中,单击展开Objects>Movie>MovieClip>Methods(对象>动画>电影剪辑>方法),然后双击createTextField方法。
4.在Object框中输入电影剪辑的实例名,该电影剪辑将是新建文本框的父对象。本例输入别名_root,因为主时间轴就是新建文本框的父对象。
5.在Parameters(参数)框中输入以下参数值,各参数之间用逗号分隔:
Instance Name(实例名):新建文本框的实例名。例如输入:"textBox"。
Depth(深度):指定堆叠顺序的数值。本例输入:1。
X:相对与父剪辑的x坐标。本例输入:50。
Y: 相对与父剪辑的x坐标。本例输入:50。
width(宽度):文本框的宽度。本例输入:200。
height(高度):文本框的高度。本例输入:100。
下面的代码显示在脚本窗口:
_root.createTextField("textBox",1,50,50,200,100);
操作结果如下图所示。

6.在动作工具箱中,单击展开Actions>Variables(动作>变量),然后双击set variable(设置变量)动作,在Variables框中输入:textBox。
7.在动作工具箱中,单击展开Objects>Movie>TextField >Properties(对象>动画>文本框>属性),拖动滚动条,找到text属性。
8.选择脚本窗口中的textBox = ""语句,然后把光标定位到Variables框的textBox后面。
9.在动作工具箱中双击text。text属性被添加到Variables框的textBox后面,二者之间自动加上点(.)。
10.在Value框输入:这是我的第一个动态创建文本框。此时在脚本窗口中显示下面的语句:
textBox.text = "这是我的第一个动态创建文本?";
操作结果如下图所示。

本例创建一个文本框,其实例名为textBox,深度为1,x为50,y为50,宽度为200,高度为100。
11.选择Control>Test Movie(控制>测试动画),你就可以看到动态创建的文本框。
如果要动态删除用createTextField方法创建的文本框(如本例中的textBox),可以在脚本中使用下面的语句:
textBox.removeTextField();
下载实例源文件
二、动态设置文本框属性
使用动作脚本设置文本框的属性,必须给文本框分配实例名。如果是用文本工具在编辑区中创建文本框,可以用属性面板设置实例名。如果是用脚本动态创建文本框,可以把实例名作为一个参数,用createTextField方法创建。
动态设置文本框属性的具体操作步骤如下:
1.如果动作面板没有打开,选择Window>Actions,打开动作面板。
2.在动作工具箱中,单击展开Objects>Movie>MovieClip>Methods,双击createTextField方法,然后在Object框中输入实例名:_root;在Parameters框中输入:"dSetPro",1,100,100,400,200。操作结果如下图所示。
3.在动作工具箱中,单击展开Actions>Variables,然后双击set variable动作,在Variables框中输入:dSetPro。
4.在动作工具箱中,单击展开Objects>Movie>TextField >Properties,拖动滚动条,找到text属性。
5.选择脚本窗口中的dSetPro = ""语句,然后把光标定位到Variables框的dSetPro后面。
6.在动作工具箱中双击text,把它添加到Variables框的dSetPro后面。
7.在Value框输入:动态设置文本框属性。操作结果如下图所示。

8.仿照上述第3-7步,用动作脚本设置文本框对象dSetPro的multiline(多行)属性为true,勾选Value文本框右边的Expression(表达式)复选框。
9.按类似的方法设置wordWrap(绕排)和border(边框)属性。此时,脚本窗口中应该显示如下语句:
dSetPro.multiline = true;
dSetPro.wordWrap = true;
dSetPro.border = true;
操作结果如下图所示。

10.选择Control>Test Movie,你就可以看到动态创建的文本框。

下载实例源文件
三、动态设置文本格式
可以使用动作脚本语言的TextFormat(文本格式)对象来设置文本框的属性。TextFormat对象合并了字符和段落格式信息。字符格式信息描述单个字符的外观:字体名、字体大小、字符颜色和相关的URL。段落格式信息描述段落的外观:左边界、右边界、首行缩进、左对齐、右对齐、居中。
首先,你必须创建一个新的TextFormat对象,然后就可以使用TextField对象的方法,并把它们作为参数传递给TextFormat对象,用以格式化文本框中的文本。
文本框中的每一个字符,可以一个个地分配给TextFormat对象。一个段落的第一个字符的TextFormat对象被用来格式化整个段落。
动态格式化文本的操作步骤如下:
1.按照动态设置文本框的方法创建文本框和设置文本框的text属性。文本框的实例名设为textBox,text属性设为“动态格式化文本”。

2.在动作工具箱中,单击展开Actions>Variables,然后双击set variable动作,在Variables框中输入:tFormat。
3.在动作工具箱中,单击展开Objects>Movie>TextFormat,拖动滚动条,找到new TextFormat方法。
4.选择脚本窗口中的tFormat = ""语句,然后把光标定位到Value框中。
5.在动作工具箱中双击new TextFormat,把它添加到Value框中,勾选其右边的Expression复选框。操作结果如下图所示。

脚本窗口中应该显示下面的语句:
tFormat = new TextFormat();
6.在动作工具箱中,单击展开Actions>Variables,然后双击set variable动作,在Variables框中输入:tFormat。
7.在动作工具箱中,单击展开Objects>Movie>TextField >Properties,拖动滚动条,找到color属性。
8.选择脚本窗口中的tFormat = ""语句,然后把光标定位到Variables框的tFormat后面。
9.在动作工具箱中双击color,把它添加到Variables框的tFormat后面。
10.在Value框输入:0xff0000。此时,脚本窗口应该添加下面的语句:
tFormat.color = 0xff0000;
操作结果如下图所示。
11.仿照上述6-10步骤,设置文本格式对象的italic(斜体)属性和size(大小)属性。脚本窗口应该增加下面两个语句:
tFormat.italic = true;
tFormat.size = 24;
12.在动作工具箱中,单击展开Objects>Movie>TextField>Methods(对象>动画>文本框>方法),然后双击setTextFormat方法。
13.在Object框中输入电影剪辑的实例名textBox。
14.在Parameters框中输入上面第5步创建的文本格式对象tFormat。脚本窗口中应该显示下面的语句:
textBox.setTextFormat(tformat);
操作结果如下图所示。
15.选择Control>Test Movie,你就可以看到动态格式化的文本。
下载实例源文件
四、用文本框事件触发动作脚本
我们可以使用动作脚本来俘获文本框发生的事件。例如,可以确定用户是否修改了文本框的文本或滚动了文本。通过编写脚本语句,使用这些事件来触发脚本运行。可以俘获的文本框事件包括:onChanged和onScroller。
用文本框事件触发脚本的方法如下:
1.用文本工具在编辑区中创建一个文本框,然后在属性面板中设置实例名(如textBox),如下图所示;或使用动作脚本中的createTextField方法动态创建文本框,把实例名作为createTextField方法的参数,给文本框指定实例名。

2.在动作面板的动作工具箱中,单击展开Objects>Movie>TextField>Events,然后双击一种事件。本例双击onChanged事件。
3.在Object框中输入第1步创建文本框时指定的实例名。本例输入textBox。
4.在该函数中添加脚本语句,这些语句将在文本框改变时运行。例如,在动作面板的动作工具箱中,单击展开Actions>Miscellaneous Actions(动作>各种动作),双击trace,在Message框中输入:你改变了文本框的文本,在脚本窗口的函数中添加下列语句:
trace("你改变了文本框的文本");
操作结果如下图所示。

5.选择Control>Test Movie,你就可以看到输入文本框。改变文本框的内容,在输出窗口就会显示“你改变了文本框的文本”,如下图所示。

需要指出的是,Trace动作只在测试环境中有效,在播放器中无效。
下载实例源文件
本文介绍的是用动作脚本动态创建和控制文本框的基本方法,在动画设计中灵活运用,就可以创作出复杂多变的文字动画。在使用中笔者还注意到,用脚本设置中文字体时存在问题,有待版本升级时加以改进。
五、TextField和TextFormat对象的属性和方法列表
1.TextField对象的属性和方法
(1)TextField的方法
|
方法 |
说明 |
|
TextField.addListener |
注册一个对象,当onChanged和oNScroller事件发生时用来接收通知。 |
|
TextField.getDepth |
返回文本框的深度。 |
|
TextField.getNewTextFormat |
获取分配给新插入的文本的默认文本格式。 |
|
TextField.removeListener |
删除侦听对象 |
|
TextField.removeTextField |
删除用MovieClip.createTextField方法创建的文本框 |
|
TextField.setNewTextFormat |
给用户或使用方法插入的文本设置文本格式对象。 |
|
TextField.replaceSel |
替换当前的选择。 |
|
TextField.setTextFormat |
给新插入的文本设置文本格式。 |
(2)TextField的属性
|
属性 |
说明 |
|
TextField._alpha |
文本框实例的透明度值。 |
|
TextField.autoSize |
控制文本框的自动对齐和大小变化。 |
|
TextField.background |
指定文本框是否拥有背景填充。 |
|
TextField.backgroundColor |
指定文本框是否拥有背景色。 |
|
TextField.border |
指定文本框是否拥有边框。 |
|
TextField.borderColor |
指定文本框的边框颜色 |
|
TextField.bottomScroll |
文本框的最低可见行。 |
|
TextField.embedFonts |
指定文本框是使用嵌入字体轮廓还是使用设备字体。 |
|
TextField._highquality |
指定动画的渲染质量。 |
|
TextField._height |
以像素为单位的文本框实例的高度。本属性只影响文本框的范围框,不影响边框宽度或文本字体大小。 |
|
TextField.hscroll |
指定文本框的水平滚动值。 |
|
TextField.html |
指定文本框是否包含HTML。 |
|
TextField.htmlText |
文本框内容包含HTML文本。 |
|
TextField.length |
文本域的字符数。 |
|
TextField.maxChars |
文本域可以包含的最大字符数。 |
|
TextField.maxhscroll |
TextField.hscroll属性的最大值。 |
|
TextField.maxscroll |
TextField.scroll属性的最大值。 |
|
TextField.multiline |
指定文本框是否包含多行。 |
|
TextField._name |
文本框实例名。 |
|
TextField._parent |
对本实例之父的引用,按钮或电影剪辑。 |
|
TextField.password |
指定文本框是否隐藏输入的字符。 |
|
TextField._quality |
指定动画的渲染质量。 |
|
TextField.restrict |
用户可以在文本框中输入的字符集。 |
|
TextField._rotation |
文本框实例的旋转角度。 |
|
TextField.scroll |
指定文本框当前的滚动位置。 |
|
TextField.selectable |
指定文本框是否可选。 |
|
TextField._soundbuftime |
声音在播放之前必须预缓存的秒数。 |
|
TextField.tabEnabled |
指定一个电影剪辑是否包含在自动的Tab排序中。 |
|
TextField.tabIndex |
指定一个对象的Tab顺序。 |
|
TextField.text |
文本框的当前文本。 |
|
TextField.textColor |
文本框中当前文本的颜色。 |
|
TextField.textHeight |
文本框范围框的高度。 |
|
TextField.textWidth |
文本框范围框的宽度。 |
|
TextField.type |
指定文本框是输入文本框还是动态文本框。 |
|
TextField._url |
创建文本框实例的SWF文件的URL。 |
|
TextField.variable |
与文本框关联的变量名。 |
|
TextField._visible |
确定文本框实例是隐藏还是可见的逻辑值。 |
|
TextField._width |
文本框实例的宽度(以像素为单位)。本属性仅影响文本框的范围框,不影响边框宽度或文本字体大小。 |
|
TextField.wordWrap |
指定文本框文本自否自动绕排。 |
|
TextField._x |
文本框实例的x坐标。 |
|
TextField._xmouse |
光标相对与文本框实例的x坐标。 |
|
TextField._xscale |
指定文本框实例水平缩放的百分数。 |
|
TextField._y |
文本框实例的y坐标。 |
|
TextField._ymouse |
光标相对与文本框实例的y坐标。 |
|
TextField._yscale |
指定文本框实例垂直缩放的百分数。 |
(3)事件管理程序
|
方法 |
说明 |
|
TextField.onChanged |
当文本框文本改变时调用。 |
|
TextField.onKillFocus |
当文本框失去焦点时调用。 |
|
TextField.onScroller |
当文本框的scroll、maxscroll、hscroll、maxhscroll或bottomscroll属性改变时调用。 |
|
TextField.onSetFocus |
当文本框获得焦点时调用。 |
(4)侦听程序
|
方法 |
说明 |
|
TextField.onChanged |
当文本框文本改变时通知。 |
|
TextField.onScroller |
当文本框的scroll或maxscroll属性改变时通知。
2.TextFormat对象的属性和方法
(1)TextFormat的方法
|
方法 |
说明 |
|
TextFormat.getTextExtent |
返回包含宽度和高度属性(指明文本框中文本的大小)的对象。 |
(2)TextFormat的属性
|
属性 |
说明 |
|
TextFormat.align |
指定段落的对齐方式。 |
|
TextFormat.blockIndent |
指定块缩进(以点表示)。 |
|
TextFormat.bold |
指定文本是否是粗体。 |
|
TextFormat.bullet |
指定文本是否是一个以黑点作为项目符号的无序列表。 |
|
TextFormat.color |
指定文本的颜色。 |
|
TextFormat.font |
用文本格式指定文本的字体名。 |
|
TextFormat.indent |
指定段落第一个字符的左缩进。 |
|
TextFormat.italic |
指定文本是否是斜体。 |
|
TextFormat.leading |
指定行间距。 |
|
TextFormat.leftMargin |
指定段落左边界(以点为单位)。 |
|
TextFormat.rightMargin |
指定段落右边界(以点为单位)。 |
|
TextFormat.tabStops |
指定自定义的制表位。 |
|
TextFormat.target |
指定显示超链接的浏览器窗口。 |
|
TextFormat.size |
指定文本的字体大小。 |
|
TextFormat.underline |
指定文本是否有下划线。 |
|
TextFormat.url |
指定文本链接的URL。 |
|
|
|
|
|
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
|
|
|
|
|
责任编辑: 原点 |
投稿作者: 莫治雄 |
|
|
信息来源: 网络 |
录入时间: 2005-6-19 |
|
|
|
| |
|
|
|
|
|
|
| Copyright ©2005 - 2008 IT00.COM,All Rights Reserved |
|