AS3 CookBook学习整理(七)

本文介绍了Flash中关于文本框的各项操作技巧,包括自动调整文本框大小、文本滚动、响应滚动事件、格式化文本、设置字体、取消事件默认行为等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
  }
 }
}

 

转载于:https://www.cnblogs.com/CoderWayne/archive/2010/07/15/1778060.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值