第八课:文本框
【Part1:文本框的创建与删除】 在制作flash动画时,我们会频繁的用到文本框:无论是显示提示信息还是与浏览者进行交互的输入信息都是以文本框的手段实现的。 一、创建文本框: 1、在舞台上使用文本工具创建文本框 该方法超简单:新建一flash文件,用文本工具在舞台上画一个文本框,这样文本框就建好了。文本框建好后,需要在属性面板中进行设置: (1)文本框的类型: 点开类型下拉列表 可以看到共有三种文本框类型可供选择:静态文本、动态文本、输入文本。 ①静态文本相当于标签,在AS中不能进行操作,本课程不介绍。以下文本框均是指动态文本和输入文本,动态文本和输入文本可在运行时进行操作。 ②动态文本是运行时动态改变文本问容。 ③输入文本是在运行时可由用户输入文本内容。 (2)文本框的命名: 为了在AS中对其进行操作,应在属性面板中为其命名。 为了书写代码的方便,我们最好按照下面的方式命名:textname_txt 【在名字后方加上_txt后缀】 因为,一旦加上后缀,再在后缀后方紧跟一个“点”的时候,就会出现代码提示 如果,你命名时不给加后缀,就没有上图的代码提示了。此时,你必须将代码一个一个敲出来哦 【友情提示:flashCS5之后(包含flashCS5)的创作软件,如果建立AS3的文档,使用后缀的方法,不再出现上图的代码提示。不过,只要建立AS2的文档,所有版本的flash创作软件都会由上图的代码提示功能哦】 2、在AS代码中创建文本框: 运用TextField类的createTextField()方法可以在运行时创建文本框。格式为: createTextField("名称",深度,x坐标,y坐标,宽度,高度) 说明 ①深度:相当于层的概念,深度数字越大就越在上面。同一深度只能包含一个对象,如果在同一深度添加新的对象,那么新的对象会覆盖同一深度上原来的对象。(关于深度的详细内容将在影片剪辑课程中介绍) ②x、y:创建的文本框的注册点。注册点位于文本框的左上角。 新建一flash文件,打开帧动作面板,输入: this.createTextField("my_txt",1,100,100,200,50); my_txt.border=true; my_txt.text="动态创建的文本框"; 测试影片,将看到一个文本框,文本内容是:"动态创建的文本框".。 本例动态创建了一个文本框,然后设置了文本框的两个属性: border 设置文本框是否有边框; text 设置文本框的内容。 文本框还有很多属性,将在后续课程内介绍。 【友情提示】是不是觉得这个createTextField()单词太长了不好记呢?哈哈,如果你用的flash版本号是flashCS5,那么,你无须记忆这个单词,你只要记得该单词的大致模样即可。在编程时只要输入this.(注意,要输入“点”)就会出现超级强悍的代码提示 敲入createTextField的前两个字母cr的时候,就会自动跳转到createTextField单词,此时直接按回车键,就可以将createTextField瞬间输入 注意,这种增强的代码提示功能,是flashCS5的新增功能,之前版本的flash创作软件并不具备哦。所以,推荐大家使用flashCS5软件来编写代码,会超级简单易学。 二、删除文本框: 对于用createTextField()创建的文本框可以用removeTextField()方法来删除: 在舞台上放一按钮,并为其命名为:del_btn 然后在帧动作面板中输入: this.createTextField("my_txt",1,100,100,200,50); my_txt.border=true; my_txt.text="动态创建的文本框"; del_btn.onRelease=function(){ my_txt.removeTextField(); } 测试影片,将看到一个文本框,文本内容是:"动态创建的文本框"。点击按钮时,文本框被删除。 三、在AS代码中读取和设置文本框的内容: 有两种方法: 1、设置或读取文本框的text属性(text属性代表文本框的内容) 在舞台上画一文本框,设置其类型为动态文本,为其取名为mytext1_txt。然后在帧动作面板中输入: mytext1_txt.text="动态文本框" 测试影片,文本框中将显示"动态文本框"。 在属性面板中,还可以设置大小、位置、字体、字体大小、颜色、边框等属性。 2、给文本框设置变量。在属性面板内: 在这里可以为文本框设一变量,那么这一变量就代表文本框的内容。我们在这里输入a,然后将帧动作中的代码改为: a="动态文本框" 测试影片,文本框中同样显示"动态文本框"。 【友情提示】第二种方法现在不推荐使用,而主张使用第一种方法的text属性。 四、综合实例:算术练习器 本练习由程序出100以内的加减乘除题,由用户计算,再由程序判定计算是否正确。通过本练习可以实践各种文本框的应用,同时也可对前面各课介绍的基础知识进行综合应用,如函数、条件语句、数组、运算符等。下面来制作这个练习器: 1、制作标题文本框: 用文本工具在舞台上方居中画一文本框,打开属性面板,选择静态文本。设置好字体、大小、颜色等属性.在文本框中输入:"算术练习器". 2、制作出题的文本框: 在稍下面一点再画一个文本框,类型为动态文本。设置其它属性:不要边框。该文本框用于显示算术题目,文字较多,且要显示两行,所以请选择"多行"。将该文本框命名为tm_txt 3、制作用户输入答案的文本框: 在下面再画一文本框,类型为输入文本。命名为da_txt该文本用于用户输入答案。设置其它属性:点一下显示边框按钮。 需要注意的是,在属性面板右下角,有一“自动调整字距”选项框,切莫打钩。(因为该文本框中输入的内容为数字,此项打钩后文本内容将变为字符,那么将会导至后续程序失败.所以请记住凡是需要参加计算的数字文本不能选择此项) 4、制作两个按钮元件: 标签分别为:"确定"、"下一题"。将两个按钮放到舞台下方。注意应与第三个文本框之间间隔一定距离,因为我们还要在运行时创建一个文本框用于显示答题的结果。打开属性面板,将两个按钮分别命名为:qd_btn和xyt_btn 5、现在开始写代码: 新建一层,命名为as,打开帧动作面板,书写下面的代码: //1、初始化三个变量,用来存放两个参与计算的数字及答案: var a:Number; var b:Number; var jg:Number; /* 2、书写出题函数 程序刚打开时首先应出好题目,做完一道题点击下一题时又要出一次题目。这就是说出题的代码将重复使用,请养成良好的习惯,将要重复使用的代码做成函数,以免重复输代码。我们也借此练习一下函数的声明及调用。 */ function ct(){ a=random(99)+1; //加1就避免了算数出现0的情况. b=random(99)+1; var ysfz:Array=new Array("+","-","×","÷"); //声明了一个数组用于存放运算符. var ysfs =random(4); //产生一个0到3的随机数用于提取数组ysfz中的运算符. var ysf=ysfz[ysfs]; //提取了运算符. tm_txt.text="请计算:"+a+ysf+b+"\n"+"除法请去掉余数"; //通过动态文本框将题目显示出来 \n是换行符(需要加双引号);也可以用newline(不加双引号) switch(ysfs){ //用一个条件语句计算结果 case 0: jg=a+b; break; case 1: jg=a-b; break; case 2: jg=a*b; break; case 3: jg=int(a/b); /*先计算a与b的商,然后将这个商只保留整数(不是四舍五入,而是直接去掉小数以后的,只保留整数)。这样做是便于程序的判断:假设出题时得到如下一个题目10/3,那么结果就是一个除不断的小数。到底保留到几位数不好判断。*/ break; } } ct(); //调用ct()函数,题就出好了。 //3、给两个按钮分别加代码 //点击”确定”按钮时,判断用户是否回答正确,并给出结论: qd_btn.onRelease = function(){ createTextField("jg_txt",0,70,250,200,50); //在运行时创建了一个文本框,这里文本框的坐标大家根据自己的实际情况进行修改. if(da_txt.text ==jg){ //如果用户在输入文本中输入的数字等于题的结果 jg_txt.text = "回答正确"; } else { jg_txt.text = "回答不正确"; } } //点击“下一题”按钮时,重新出题,输入文本框清空,删除运行时创建的文本: xyt_btn.onRelease=function(){ da_txt.text=""; //清空输入文本 jg_txt.removeTextField(); //删除运行时创建的文本 ct(); //调用ct()函数重新出题. } 为了让我们的练习器看起来更美观,大家还可以设置一个渐变色的背景。 另外,因为是动态文本,所以字体会变得非常不美观。为了让我们的程序更完美,我们可以使用“嵌入”的手段,获取好看的文字效果: 1、用选择工具单击tm_txt这个动态文本,在属性面板内,单击“可读性消除锯齿”右边的“嵌入”,会弹出对话框 2、单击列表内的“数字[0...9]”选中(这是用来嵌入所有的数字的) 然后在下面的“包含这些字符”下方的文本框内输入以下的文字 请计算:除法去掉余数+-×÷ 3、搞定后单击“确定”,效果就出来了。同理,你也可以将da_txt这个输入文本也进行相同操作(只嵌入数字和-即可,无须嵌入其他字符) 【特别强调】:一旦使用“嵌入”功能,就必须将这个文本框内可能出现的所有字符都嵌入,否则就会不会出现任何字符!
最近访问本帖者列表: | |||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
【Part2文本框的属性】
一、文本框的属性 文本框创建后(我们讲解的都是在AS代码中创建的文本框,而不是在舞台中使用文本工具创建的),我们通过其属性和方法可以对文本框进行操作。本节课我们介绍文本框的属性设置。 1、text: 表示文本字段中的当前文本。使用回车符"\r"或者换行符"\n"来分行书写文字。 2、antiAliasType:用于此TextField实例的消除锯齿类型。 它有两个值: "normal":应用常规文本消除锯齿。 "advanced":应用高级消除锯齿,将增加文本的可读性(此功能从Flash Player 8 起可用)。 高级消除锯齿可以高品质地呈现小尺寸的字体,它最适合具有大量小字号文本的应用程序。建议不要对大于48 磅的字体使用高级消除锯齿。 设置本属将使用消除锯齿的文本,它将使文本字段有更好的、更清晰的显示效果,但所产生的swf文件较大。使用设备字体是指使用用户计算机上已安装的字体,它产生的swf文件最小,而将此属性设为:"advanced"时,产生的swf文件最大。如果制作有大量文本字的swf文件时,要控制文件的大小,请考量此项如何设置更好。 this. createTextField("mytext_txt",1,100,100,200,50); mytext_txt.text = "这是消除锯齿的文本"; mytext_txt.antiAliasType = "advanced" this. createTextField("mytext1_txt",2,100,200,200,50); mytext1_txt.text = "这是没有消除锯齿的文本"; 测试影片,发现两个文本效果差不多。 3、background: 指定文本字段是否具有背景填充。如果为 true,则文本字段具有背景填充。如果为 false,则文本字段没有背景填充。 4、backgroundColor: 文本字段背景的颜色。默认值是 0xFFFFFF(白色)。只有当文本字段有边框时,背景颜色才可见。 5、border: 指定文本字段是否具有边框。如果为 true,则文本字段具有边框。如果为 false,则文本字段没有边框。 6、borderColor: 文本字段边框的颜色。默认值是 0x000000(黑色)。 this. createTextField("mytext_txt",1,100,100,200,50); mytext_txt.text = "本例创建了一个文本框:"+"\r"+"运用上面介绍的属性,对文本框外观进行设置"; // \r为换行的意思,相当于敲了一下回车(Enter)键 mytext_txt.autoSize = "center" //文本框中间固定,向两边缩放. mytext_txt.background = true; //文本框有背景 mytext_txt.backgroundColor=0xff0000; //文本框背景为红色 mytext_txt.border = true; //文本框有边框 mytext_txt.borderColor=0x0000ff; //文本框边框为蓝色 本例中,我们需要给创建的文本框的多个属性进行设置。代码有许多重复。在AS中有一个with语句,可以帮助我们克服重复输代码的窘境。有了with语句,您就不必重复书写对象的名称或路径。 with语句的格式是: with(对象){ 不用加对象的各个属性 } 使用with语句后,本例可以被写成下面的样子: this. createTextField("mytext_txt",1,100,100,200,50); mytext_txt.text = "本例创建了一个文本框:"+"\r"+"运用上面个绍的属性,对文本框外观进行设置"; with(mytext_txt){ autoSize = "center" ; background = true; backgroundColor=0xff0000; border = true; borderColor=0x1111d5; } with语句可以极大的缩减代码,而且看起来更加直观、便于阅读。 问:使用with语句后,当我设计属性的时候,快捷菜单不再出现了,就必须自己输入了。怎么办? 答:看这个区域: 在需要的属性上双击就会自动插入到代码编辑区,只不过会多出来一个not_set_yet. 需要你删除它。 7、embedFonts:指定是否使用嵌入字体轮廓进行呈现。 一个布尔值,当它为 true 时,使用嵌入字体轮廓呈现文本字段;如果为 false,则使用设备字体呈现文本字段。 如果将文本字段的embedFonts设置为true,则必须通过应用于该文本字段的TextFormat对象的 font属性,指定该文本的字体。如果库中不存在指定的字体(具有对应的链接实例名称),则将不显示文本。【TextFormat对象将在后面介绍】 8、 _height 文本框的高度 _width 文本框的宽度 9、multiline:表示文本字段是否为多行文本字段。 如果值为 true,则文本字段为多行文本字段;如果值为 false,则文本字段为单行文本字段。 10、 _name:文本字段的实例名称。 11、length:表示文本字段中的字符数 12、password:指定文本字段是否是密码文本字段。 如果password 的值为true,则文本字段为密码文本字段,并使用星号替代实际字符来隐藏输入的字符;如果为 false,则文本字段不是密码文本字段。 启用密码模式时,剪切和复制命令及其相应的键盘快捷方式不起作用。此安全机制可防止不良用户使用快捷键在无人看管的计算机上破译密码。 this. createTextField("mytext_txt",1,100,100,200,50); with(mytext_txt){ text = "12345"; border = true; password = true; } 测试影片发现:文本框中只有星号,无法看到文本内容。 13、_rotation:文本字段距其原始方向的旋转程度 使用设备字体的文本字段不支持旋转值。您必须使用嵌入字体才能对文本字段使用 _rotation 14、selectable:一个布尔值,表示文本字段是否可选。 值 true 表示文本可选。 selectable 属性控制文本字段是否可选,而不控制文本字段是否可编辑。动态文本字段即使不可编辑,它也可能是可选的。如果动态文本字段是不可选的,则您不能选择其中的文本。 如果 selectable 设置为 false,则文本字段中的文本不响应来自鼠标或键盘的"选择"命令,并且不能使用"复制"命令复制文本。 如果 selectable 设置为 true,则可以使用鼠标或键盘选择该文本字段中的文本。即使文本字段是动态文本字段而不是输入文本字段,您也可以用这种方式选择文本。可以使用"复制"命令复制文本。 this.createTextField("mytext_txt",1,100,100,200,50); this.createTextField("mytext1_txt",2,100,200,200,50); mytext_txt.border = true; mytext1_txt.border = true; mytext1_txt.selectable=false; mytext_txt.text="这个文本内容可选"; mytext1_txt.text = "这个文本内容不可选" 测试影片,出现两个文本框,一个文本框的内容可以拉黑(可选),点右键有复制菜单项;而另一个则不能被拉黑,没有右键菜单项。 15、autoSize:文本的自动大小缩放和对齐方式,可设为以下几个值: "none"或false:不自动缩放; "left" 或 true,左边固定向右边缩放; "right",右边固定向左边缩放; "center",中间固定向两边缩放。 16、textColor:表示文本字段中文本的颜色。 this.createTextField("mytext_txt",1,100,100,200,50); with(mytext_txt){ border = true; textColor=0xff0000; text="这个文本是红色的"; } 17、textHeight 或者 textWidth 指示文本的高度(或者宽度),以像素为单位 18、type:指定文本字段的类型。 共有两个值:"dynamic"(指定用户无法编辑的动态文本字段)和 "input"(指定输入文本字段)。 19、_visible: 一个布尔值,表示文本字段是否可见。禁用不可见的文本字段(_visible 属性设置为 false)。 20、wordWrap:表示文本字段是否自动换行。 如果 wordWrap 的值为 true,则该文本字段自动换行;如果值为 false,则该文本字段不自动换行 21、 _x 或者 _y 一个整数,用来设置文本字段相对于父级影片剪辑的本地坐标的 x (或者y)坐标。注册点在左上角 22、 _xscale 或者_yscale 确定从文本字段注册点开始应用的文本字段的水平(或者垂直)缩放比例,以百分比表示。 23、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事件,这是每运行一帧就执行一次,这样就形成了一个无限的循环。 24、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(); myformat.bold=true; this.createTextField("mytext_txt",1,100,100,100,20); with(mytext_txt){ autoSize=true; text="设置了粗体"; setTextFormat(myformat); } 测试影片,可以看到文本框中的文字是粗体的。 4、TextFormat对象的属性: (1)align:指示段落的对齐方式的字符串。 您可以将此属性应用于静态文本和动态文本。下面的列表显示此属性的可能值: "left" -- 段落为左对齐。 "center" -- 段落居中。 "right" -- 段落为右对齐。 "justify" -- 段落为两端对齐。(Flash Player 8 中添加了此值。) 默认值是 null,它指示该属性未定义。 (2)blockIndent:以磅为单位指示块缩进的数字。 块缩进应用于整个文本块,即文本的所有行。而普通缩进 (TextFormat.indent) 只影响各段的第一行。如果此属性为 null,则 TextFormat 对象不指定块缩进。 (3)bold:指示文本是否为粗体字。 默认值是null,它指示该属性未定义。如果值为 true,则文本为粗体字。 (4)color 指示文本的颜色。 italic 一个布尔值,指示使用此文本格式的文本是否为斜体 size 文字的大小 font 使用此文本格式的文本的字体名称,以字符串形式表示。 (5)indent:指示从左边距到段落中第一个字符的缩进的整数。 正值指示普通缩进。您可以使用负值,但只可在左边距大于 0 时进行负缩进。若要将边距设置为大于 0,请使用 indent 属性或 TextFormat 对象的 blockIndent 属性。默认值是 null,它指示该属性未定义。 (6)leading:一个整数,表示以像素为单位的行间垂直距离(称为"行距")。 (7)leftMargin 或者 rightMargin 段落的左(右)边距,以磅为单位 (8)letterSpacing:字间距 (9)underline:一个布尔值,指示使用此文本格式的文本有下划线 (true) 还是没有下划线 (false) 滚动文本的制作 新建一flash文档,导入一图片,用为背景,居中放好。 新插入一层,命名为as,开始写代码: 1、横向滚动: 首先创建一个TextFormat对象,然后设置文本框要用到的属性。 创建文本框,并设置其autoSize属性为false,不让其缩放大小。 设置文本框的text属性,前后输入一定数量空格,以避免滚动时出现不连惯。 用onEnterFrame事件实现滚动,方法参见上面例句。 2、纵向滚动: 首先创建一个TextFormat对象,然后设置文本框要用到的属性。 创建文本框,并设置其autoSize属性为false,,不让其缩放大小。设置文本框的text属性,第一行前和最后一行后,插入一定数量的\r,以避免滚动时出现不连惯。 3、创建一函数,使文本滚动,方法参考横向滚动。 用:var 随便取个变量名 = setInterval(刚建的函数名,1000); 实现滚动 这一句的意思是每隔1000毫秒调用一次函数,后面课程将详细介绍。 4、3D字效果 原理是创建两个文本框,内容相同、字的颜色不同、文本框的位置略微错开2个象素左右。 给出完整代码供大家参考: 建议大家自已完成本练习,不要看这个代码。实在有困难时,只可参考这个代码。坚决反对直接复制本代码,那样就没意思了。对你学习AS一点好处都没有。 var myformat:TextFormat = new TextFormat(); with(myformat){ bold = true; size = 30; color = 0xff0000; } this.createTextField("mytext_txt",1,200,50,200,50); with(mytext_txt){ autoSize=false; text=" 在花好月圆之夜,祝各位朋友中秋快乐! "; 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); with(mytext1_txt){ autoSize=false; text="\r"+"\r"+"\r"+"\r"+"\r"+"\r"+"明月几时有?"+"\r"+"把酒问青天"+"\r"+"不知天上宫阙,"+"\r"+"今昔是何年"; text +="\r"+"我欲乘风归去,"+"\r"+"又恐琼楼玉宇,"+"\r"+"高处不胜寒。"+"\r"+"起舞弄清影,"+"\r"+"何似在人间."; text +="\r"+"\r"+"转诸阁,"+"\r"+"低倚户,"+"\r"+"照无眠."+"\r"+"不应有恨,"+"\r"+"何事长向别时圆."; text +="\r"+"人有悲欢离合,"+"\r"+"月有阴晴圆缺,"+"\r"+"此事古难全."+"\r"+"但愿人长久,"+"\r"+"千里共婵娟." text +="\r"+"\r"+"\r"+"\r"+"\r"+"\r"+"\r"+"\r" 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(); with(myformat2){ bold = true; size = 30; color = 0x988E81; } this.createTextField("mytext2_txt",3,200,300,200,50); with(mytext2_txt){ autoSize="center"; text="花好月圆贺中秋"; setTextFormat(myformat2); } var myformat3:TextFormat = new TextFormat(); with(myformat3){ bold = true; size = 30; color = 0x430FBD; } this.createTextField("mytext3_txt",4,202,300,200,50); with(mytext3_txt){ autoSize="center"; text="花好月圆贺中秋"; setTextFormat(myformat3); } | |
【Part3 文本框的事件&方法】
一、文本框的事件 1、onChanged事件: 在文本字段的内容发生更改时调用。在文本框中的内容发生改变时就会触发。比如在输入文本中输入或删除一个字符时都会触发这个事件。 this.createTextField("mytext_txt",1,50,20,400,200); this.createTextField("myinputtext_txt",2,100,300,100,20); with(myinputtext_txt){ autoSize = false; border = true; type = "input"; } var myformat:TextFormat = new TextFormat(); with(myformat){ bold=true; color=0xff0000; size=26; autoSize=true; } mytext_txt.wordWrap=true; myinputtext_txt.onChanged = function(){ mytext_txt.text = myinputtext_txt.text; mytext_txt.setTextFormat(myformat); } 这个例子,创建了两个文本框(其中一个是输入文本),分别设置了属性。 然后用onChanged事件,在输入框中输入文本的同时,文本显示在另一文本框中。 每输入一个字,输入文本内容就发生了改变,从而触发了onChanged事件,而执行将文本显示在另一文本框中的任务。 2、onKillFocus 事件: 在文本字段失去键盘焦点时调用。文本框的焦点,就是说光标。当文本框失去光标时,就会触发onKillFocus事件。 this.createTextField("mytext_txt",1,50,20,400,200); this.createTextField("myinputtext_txt",2,100,300,100,20); myinputtext_txt.autoSize = false; myinputtext_txt.border = true; myinputtext_txt.type = "input"; 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事件。出现失去光标的提示。 3、onScroller 事件: 在某一个文本字段的 scroll 属性发生更改时调用。TextField.onScroller事件处理函数通常用于实现滚动条。 滚动条通常有一个缩略图或其它指示器,显示文本字段中的当前水平或垂直滚动位置。使用鼠标和键盘可以浏览文本字段,这会导致滚动位置发生更改。如果由于用户交互而导致滚动条位置发生更改,滚动条代码需要获得通知,这就是使用 TextField.onScroller的目的。 4、onSetFocus 事件:在文本字段接收键盘焦点时调用 二、文本框的方法 1、getFontList()方法: 以数组的形式返回播放器的主机系统上的字体名称。(此方法不返回当前加载的 SWF 文件中所有字体的名称。)这些名称的类型为 String。此方法是全局TextField 类的静态方法。在调用此方法时,不能指定文本字段实例。 var font:Array = new Array(); font = TextField.getFontList(); trace(font); 测试影片,你将看到,你的windows目录下fonts文件夹中的文件名称给列出来了。 2、getDepth()方法: 返回文本字段的深度。 3、getNewTextFormat()方法: 返回一个 TextFormat 对象,该对象包含文本字段的文本格式对象的一个副本。 4、getTextFormat()方法: 返回一个字符、一段字符或整个TextField 对象的TextFormat 对象。 用法:my_textField.getTextFormat():返回一个 TextFormat 对象,该对象包含文本字段中所有文本的格式设置信息。 my_textField.getTextFormat(开始处):返回一个 TextFormat 对象,该对象包含 开始处到结束时文本字段的文本格式的一个副本。 my_textField.getTextFormat(开始处,结束处):返回一个TextFormat对象,该对象包含从 开始处 到 结束处 范围内文本的格式设置信息。 removeTextField()方法:删除文本字段。只能对使用createTextField() 创建的文本字段执行此操作。 5、replaceSel()方法: 使用新的字符替换当前所选内容。使用当前默认字符格式和默认段落格式,在当前所选内容的所在位置插入文本。 用法:my_textField.replaceSel(新字符); 可以使用 replaceSel() 方法插入和删除文本,而不破坏其余文本的字符和段落格式。 必须使用 Selection.setFocus() 将焦点放置在字段上才能发布此命令。 6、replaceText()方法: 在指定的文本字段中,用新字符替换由 开始处 和 结束处 参数所指定的一段字符。 用法:my_textField.replaceSel(开始处,结束处,新字符); 7、setTextFormat()方法: 将textFormat 参数指定的文本格式应用于文本字段中的某些文本或全部文本。textFormat 必须是一个指定需要的文本格式更改的 TextFormat 对象 用法:setTextFormat(开始处,结束处,textFormat对象);如果没有开始处和结束处,格式将运用于整个文本。 | |