1. 调整文本框大小以适应内容
设置autoSize属性可自动根据内容调整文本框大小。可用值为RIGHT, LEFT, CENTER,和NONE,都是flash.text.TextFieldAutoSize类常量
默认值为NONE,表示不自动调整大小。 另外,wordWrap属性设置为true,则当内容超出范围时自动换行。貌似必须先设置autoSize才生效
{ flash.display.Sprite; flash.text.TextField; flash.text.TextFieldAutoSize; flash.text.TextFieldType; Sample0323Sprite { Sample0323() { text:TextField = TextField(); text.type = TextFieldType.INPUT; text.border = ; text.borderColor = 0xFFFF00; text.height = 20; text.autoSize = TextFieldAutoSize.CENTER; text.wordWrap = ; .addChild(text); } } }
2. 滚动文本
水平滚动的单位为像素(最小值为0),垂直滚动的单位为行(最小值为1)。设置WheelEnabled=false可以禁用滚轮滚动行。
scrollH -- 水平滚动的像素
maxScrollH -- 文本的最大水平像素值,只读
scrollV -- 垂直滚动的行数
maxScrollV -- 文本的最大行数,只读
bottomScrollV -- 当前最后一行是第几行(在整个行数里),只读
{ flash.display.Sprite; flash.events.MouseEvent; flash.text.TextField; flash.text.TextFieldAutoSize; flash.text.TextFieldType; Sample0323Sprite { textBox:TextField; textInfo:TextField; Sample0323() { textBox = TextField(); textBox.type = TextFieldType.INPUT; textBox.width = 250; textBox.height = 100; textBox.border = ; textBox.borderColor = 0xFFFF00; textBox.background = ; textBox.backgroundColor = 0xFFFFFF; textBox.wordWrap = ; .addChild(textBox); label:TextField = TextField(); label.x = 200; label.y = 100; label.background = ; label.backgroundColor = 0xCCCCCC; label.autoSize = TextFieldAutoSize.CENTER; label.text = ; label.addEventListener(MouseEvent.CLICK,scrollH_onClick); .addChild(label); label = TextField(); label.x = 200; label.y = 150; label.background = ; label.backgroundColor = 0xCCCCCC; label.autoSize = TextFieldAutoSize.CENTER; label.text = ; label.addEventListener(MouseEvent.CLICK,maxScrollH_onClick); .addChild(label); label = TextField(); label.x = 200; label.y = 200; label.background = ; label.backgroundColor = 0xCCCCCC; label.autoSize = TextFieldAutoSize.CENTER; label.text = ; label.addEventListener(MouseEvent.CLICK,scrollV_onClick); .addChild(label); label = TextField(); label.x = 200; label.y = 250; label.background = ; label.backgroundColor = 0xCCCCCC; label.autoSize = TextFieldAutoSize.CENTER; label.text = ; label.addEventListener(MouseEvent.CLICK,maxScrollV_onClick); .addChild(label); textInfo = TextField(); textInfo.type = TextFieldType.INPUT; textInfo.y = 300; textInfo.autoSize = TextFieldAutoSize.CENTER; .addChild(textInfo); } scrollH_onClick(event:MouseEvent): { textBox.scrollH += 10; } maxScrollH_onClick(event:MouseEvent): { textBox.scrollH = textBox.maxScrollH; } scrollV_onClick(event:MouseEvent): { textBox.scrollV += 3; textInfo.text = +textBox.bottomScrollV+; } maxScrollV_onClick(event:MouseEvent): { textBox.scrollV = textBox.maxScrollV; } } }
3. 响应滚动事件
当水平或垂直滚动产生时会触发scroll事件,flash.events.Event类的SCROLL常量即代表该事件
{ flash.display.Sprite; flash.events.Event; flash.text.TextField; flash.text.TextFieldAutoSize; flash.text.TextFieldType; flash.utils.getTimer; Sample0323Sprite { textBox:TextField; textInfo:TextField; Sample0323() { textBox = TextField(); textBox.type = TextFieldType.INPUT; textBox.width = 250; textBox.height = 100; textBox.border = ; textBox.borderColor = 0xFFFF00; textBox.background = ; textBox.backgroundColor = 0xFFFFFF; textBox.wordWrap = ; textBox.addEventListener(Event.SCROLL,onScroll); .addChild(textBox); textInfo = TextField(); textInfo.type = TextFieldType.INPUT; textInfo.y = 300; textInfo.autoSize = TextFieldAutoSize.CENTER; .addChild(textInfo); } onScroll(event:Event): { textInfo.text = flash.utils.getTimer()+; } } }
4. 格式化文本框文本
有三种方式对文本进行格式化:HTML标签格式化、使用TextFormat对象、CSS样式
* HTML标签格式化示例: textBox.htmlText = "<B>粗体文本</B><U>下划线文本</U>";
* TextFormat对象示例:(注意:只对setTextFormat之前的代码有效)
var textFormat:TextFormat = new TextFormat();
textFormat.color = 0xFF0000;
textFormat.htmlText = "有效";
//也可以对部分文字进行格式化,例如:textBox.setTextFormat(textFormat,3,textBox.text.length);
textBox.setTextFormat(textFormat); textFormat.htmlText = "无效";
* CSS样式示例:(注意:只对CSS定义之后的代码有效)
var css:StyleSheet = new StyleSheet();
var styleObj:Object = {color:"#FF0000"};
css.setStyle(".stdStyle",styleObj);
textBox.styleSheet = css;
textBox.htmlText = "不潮不用花钱";
this.addChild(textBox);
{ flash.display.Sprite; flash.events.Event; flash.events.MouseEvent; flash.net.URLLoader; flash.net.URLRequest; flash.text.StyleSheet; flash.text.TextField; flash.text.TextFieldAutoSize; Sample0324Sprite { label:TextField; text:String = ; Sample0324() { btnRed:TextField = TextField(); btnRed.text = ; btnRed.y = 100; btnRed.addEventListener(MouseEvent.CLICK,onRedClick); .addChild(btnRed); btnGreen:TextField = TextField(); btnGreen.text = ; btnGreen.y = 200; btnGreen.addEventListener(MouseEvent.CLICK,onGreenClick); .addChild(btnGreen); label = TextField(); label.autoSize = TextFieldAutoSize.CENTER; label.htmlText = text; .addChild(label); } onRedClick(event:MouseEvent): { loader:URLLoader = URLLoader(); loader.load(URLRequest()); loader.addEventListener(Event.COMPLETE,onLoadComplete); } onGreenClick(event:MouseEvent): { loader:URLLoader = URLLoader(); loader.load(URLRequest()); loader.addEventListener(Event.COMPLETE,onLoadComplete); } onLoadComplete(event:Event): { css:StyleSheet = StyleSheet(); css.parseCSS((event.target URLLoader).data); label.styleSheet = css; label.htmlText = text; } } }
5. 格式化用户输入的文本
应用TextFormat对象到文本框的defaultTextFormat属性上
{ flash.display.Sprite; flash.text.TextField; flash.text.TextFieldType; flash.text.TextFormat; Sample0324Sprite { Sample0324() { textBox:TextField = TextField(); textBox.type = TextFieldType.INPUT; textBox.border = ; textBox.borderColor = 0xFFFF00; textFormat:TextFormat = TextFormat(); textFormat.color = 0xFF0000; textFormat.italic = ; textBox.defaultTextFormat = textFormat; .addChild(textBox); } } }
6. 设置文本字体
使用HTML的标签,或者设置TextFormat对象的font属性,或者通过CSS的font-family属性
修改字体有多种方法,如果使用HTML的话可通过 标签更改:field.htmlText = "Formatted text";
也可设置TextFormat对象的font属性:formatter.font = "Arial";
或者在CSS中定义font-family 属性:p {font-family: Arial;}
需要注意的是电脑中必须要有你所指定的字体,因为有些电脑上可能没有安装相应的字体,这是可指定多种字体:formatter.font = "Arial, Verdana, Helvetica";
如果都没有指定字体,默认使用系统字体。
另外我们还可使用字体组,字体组是系统默认字体的一个分类,有三种: _sans, _serif, 和_typewriter。
_sans 组包含如Arial 或Helvetica,_serif组包含如Times 或Times New Roman,_typewriter 组包含如Courier 或Courier New
7. 嵌入字体
通过[embed]元数据嵌入字体,设置文本框的embedFonts属性为true,通过标签,TextFormat对象或CSS应用字体
嵌入系统字体:
[Embed(systemFont="Onyx",fontName="hxw",mimeType="application/x-font-truetype")]
嵌入非系统字体:
[Embed(source="xjlFont.fon",fontName="xjl",mimeType="application/x-font")]
可以设置textField.rotation += 30来设置文字旋转(放在定时器或OnEnterFrame事件里),文字必须为嵌入字体,否则无法正常显示。
TextFormat方式
{ flash.display.Sprite; flash.text.TextField; flash.text.TextFieldAutoSize; flash.text.TextFormat; [Embed(source=,fontName=,mimeType=)] Sample0410Sprite { Sample0410() { textBox:TextField = TextField(); textBox.text = ; textBox.autoSize = TextFieldAutoSize.CENTER; textBox.embedFonts=; addChild(textBox); formatter:TextFormat = TextFormat(); formatter.font = ; formatter.size = 30; textBox.setTextFormat(formatter); } } }
CSS方式
{ flash.display.Sprite; flash.text.StyleSheet; flash.text.TextField; flash.text.TextFieldAutoSize; [Embed(source=,fontName=,mimeType=)] Sample0410Sprite { Sample0410() { css:StyleSheet = StyleSheet(); styleObj:Object = {color:, fontFamily:,fontSize:}; css.setStyle(,styleObj); textBox:TextField = TextField(); textBox.styleSheet = css; textBox.text = ; textBox.autoSize = TextFieldAutoSize.CENTER; textBox.embedFonts=; addChild(textBox); } } }
8. 设置焦点
设置stage.focus = xxx来设置舞台的焦点,stage.focus = null可以移除焦点
{ flash.display.Sprite; flash.events.MouseEvent; flash.text.TextField; flash.text.TextFieldType; Sample0410Sprite { Sample0410() { field:TextField = TextField( ); field.border = ; field.background = ; field.type = TextFieldType.INPUT; addChild(field); stage.addEventListener(MouseEvent.CLICK,onClick); } onClick(event:MouseEvent): { stage.focus = getChildAt(0) TextField; } } }
9. 选中TextField的部分文本及设置光标所在位置
设置TextField.setSelection(startIndex,endIndex),同时通过selectionBeginIndex和selectionEndIndex两个只读属性可获得选中文本的具体位置
如果设置setSelection的两个参数相同,则是在设置光标所在位置,通过TextField.caretIndex属性可以得到当前光标所在位置
{ flash.display.Sprite; flash.events.MouseEvent; flash.text.TextField; flash.text.TextFieldAutoSize; flash.text.TextFieldType; Sample0410Sprite { lblNumber:TextField; Sample0410() { field:TextField = TextField( ); field.border = ; field.background = ; field.type = TextFieldType.INPUT; field.text = ; .addChild(field); lblNumber = TextField(); lblNumber.autoSize = TextFieldAutoSize.CENTER; lblNumber.background = ; lblNumber.y = 150; .addChild(lblNumber); field.addEventListener(MouseEvent.CLICK,onClick); } onClick(event:MouseEvent): { textBox:TextField = event.target TextField; textBox.setSelection(5,5); strStart:String = +textBox.selectionBeginIndex.toString(); strEnd:String = +textBox.selectionEndIndex.toString(); currentIndex:String = +textBox.caretIndex; lblNumber.text = strStart + + strEnd + + currentIndex; } } }
10. 取消事件的默认行为(如果可以取消)
默认情况下,许多事件都有Flash Player执行的关联行为。例如,如果用户在文本字段中键入一个字符,则默认行为就是在文本字段中显示该字符。可以使用preventDefault()方法来防止显示该字符
然后很多事件是瞬发的,像点击事件、获得焦点、失去焦点事件
可以使用Event.cancelable属性来判断是否可以取消行为,如果返回true,则可以使用preventDefault()来取消事件;否则preventDefault()无效
{ flash.display.Sprite; flash.events.FocusEvent; flash.events.MouseEvent; flash.text.TextField; flash.text.TextFieldType; Sample0410Sprite { Sample0410() { stage.addEventListener(MouseEvent.CLICK,onClick); textBox:TextField = TextField(); textBox.type = TextFieldType.INPUT; textBox.background = ; textBox.addEventListener(FocusEvent.FOCUS_IN,onFocusIn); .addChild(textBox); textBox.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE,onMouseFocusChange); } onClick(event:MouseEvent): { ( + event.cancelable); } onFocusIn(event:FocusEvent): { ( + event.cancelable); } onMouseFocusChange(event:FocusEvent): { ( + event.cancelable); } } }