嗯……这就结束了?我这个人Bad Mind,总想搞搞恶作剧,我让我做的textField米筐进行物理性破坏测试,让其高度(或宽)小于字体的最小高度后……发现Bug一个,textField失去了原有的位置和高、宽属性被挤到了屏幕的边缘,最搞笑的就是这个测试结果……让我们加入如下代码并观察(图3)
createTextField("txt",++dpt,80,100,100,3);
trace(txt._x);
trace(txt._y);
trace(txt._width);
trace(txt._height);
trace(txt.textwidth);
trace(txt.textheight);
txt.wordwrap=1;
var i=30;
while (i--) txt.text+="rice...";

(图3,倒……y可是100耶,宽也是100耶,没办法,把我的筐撑坏了……米撒了一地)
TextFiled的简单应用
刚做了个米筐例子,看起来文本区操作还有些用途,可是仅仅这样可不够……Flash MX中新的文本区还是有很大的用途的。
例如我们做一个在线用户输入姓名和密码的简单应用,输入如下代码:
createTextField("txtUser",++dpt,80,100,100,20);
createTextField("txtPass",++dpt,80,150,100,20);
txtUser.type=txtPass.type="input";
txtUser.border=txtUser.background=1;
txtUser.bordercolor=txtPass.bordercolor=0x776655;
txtPass.border=txtPass.background=1;
txtUser.autosize=txtPass.autosize="center";
txtUser.text=txtPass.text+=" ";
txtPass.password = 1;
txtUser.tabIndex=1;
txtPass.tabIndex=2;
txtUser.tabEnabled=txtPass.tabEnabled=1;
txtUser.tabChildren=txtPass;
啊……看起来乱七八糟,但是却十分好理解,Flash MX中允许用户自定义TextField的很多属性,而对其操作更是考虑周到;我们首先定义两个类型为输入文本的TextField txtUser和txtPass,定了一基本的背景边框等样式属性后,我们用autosize属性让文本自动缩放,这样在用户输入的的时候十分的动感的,而第2个文本txtPass需要用户的内容为隐藏,所以把它的password属性设为true;接着给这两个文本初始化字符,让他们看起来不那么狭窄;最后用用到的是tabIndex,它是一个存储当前需要table键换焦点文本的数组,通过正整数来区分每个要切换的文本,而你如果你要是用到这个功能,文本区的tabEnabled必须是true,否则无效,而tabChildren属性是新加入的属性,我们可以设置/获取其内部的子文本对象。测试,你可以看到一个用户输入界面,这一切的制作过程是不需要你动任何鼠标操作的。(如图4)

(图4,哈……我的密码长度恐怖吧)
但是,这个tabIndex和selection有直接的冲突。当你设置了tabEnabled和tabIndex后,如果要使用selection.setFocus(txtUser);这样的看上去什么错误都没有的代码,将会产生一个内部优先级错误,将无法有效使用tab键来切换文本。
写到这里,通过很多例子我们再次证明了在Flash MX中可以完全脱离鼠标并能完成很多同样甚至更酷的效果,而此时,Flash MX的阳光射线才不过是上午10点半,更多的功能还等待我们去探索……
源文件:http://www.dnvs.net/tutorial/flash_mx/day_5.fla