AS3及Flex的常用知识

【改 变输 swf的尺度,背景 色或 帧频
在"Navigator"窗框里右
你的 > "Properties"> "ActionScript Compiler">在"Additional compiler arguments"里 入你所需要的命令
如想改
背景 , 请输 : -default-background-color 0xffffff


【鼠

mouseX mouseY

检查变 型并返回布
is

检查变 型并返回 型】
typeof

检查对 型并返回 该对 象】
as

【是数字但不是有效数字 问题
var quantity:Number = 15 - "rabbits";
trace(typeof quantity); //
: "number" , 但它是NaN (not a number)
trace(quantity is Number); //true
trace(quantity != NaN); //false
//使用isNaN()函数
检测 :
isNaN(quantity); //true
//
检测变 量是否内含有效数字:
!isNaN(quantity); //false

【取消默 编译 模式】
在"Navigator"窗框里右
你的 > "Properties"> "ActionScript Compiler">取消"Enabel compile-time type checking" 选项

【基元数据 型和 复杂 数据 型好比" 值类 "和"引用 "】
基元数据
似按 值传递 :
var intOne:int = 1;
var intTwo:int = 1;
trace(intOne == intTwo); //true

复杂 数据 似按引用 传递
var arrayOne:Array = new Array("a", "b");
var arrayTwo:Array = arrayOne;
trace(arrayOne == arrayTwo); //true
//-----------------------------------
var arrayOne:Array = new Array("a", "b");
var arrayTwo:Array = new Array("a", "b");
trace(arrayOne == arrayTwo); //false

逻辑 AND(&&) OR(||) 的小知
逻辑 And(&&):
    
除非条件表达式的前半部分 , ,ActionScript 不会再去求算 逻辑 AND 运算符的后半部 . 如果前半部 , 整个条件表达式一定 , 所以再去求算后半部就没效率了 .
逻辑 OR(||):
    
除非条件表达式前半部 , ,ActionScript 不会再去求算 逻辑 OR 运算符的后半部 , 如果前半部 , 整个条件表达式一定 .
总结 : 使用 逻辑 AND(&&) , 果最可能 false 的表达式放到前面 ; 使用 逻辑 OR(||) , 果最可能 true 的表达式放到前面 .

Timer 注意事
不要 认为 Timer 可以极其准确 ; 使用 Timer 时间间 隔不要低于 10 毫秒 .

private,protected,internal,public 访问权 限】
private:
只能在 本身内部 访问 , , 命名私有成 员时 以下划 线 "_" 开头 ;
protected:
可以由 本身或任何子 类访问 . 是以 . 言之 , 类实 例可以 访问 自己的保 或者父 的保 , 但不能 访问 相同 的其它 例的保 , , 命名保 员时 以下划 线 "_" 开头 ;
internal:
可以由 本身或者相同包内的任何 类访问 ;
public:
可以在 内部 访问 , 也可以由 类实 访问 , 或者声明 static , 可以直接从 类访问 .

【一个函数具有未知个数的参数,用arguments 象或"...(rest)"符号 访问 它的参数】
注意:使用"...(rest)"参数会使 arguments
象不可用;
private funciton average():void{
     trace(arguments.length); //
出参数的个数
     // arguments的
型是:object,但可以像 访问 访问
     trace(arguments[1]); //
出第二个参数
}
private function average(...argu):void{
     trace(argu[1]); //
出第二个参数,argu参数名是自定 .
}

错误处 try,catch,finally】
private function tryError():void{
     try {
         trace("
测试开 -try");
         throwError();
     }catch(errObject:Error) {
         trace("
错误 信息:" + errObject.message);
         trace("
测试结 -catch");
         return;
     }finally{
         trace("
catch里已 return方法,但位于return方法后面的finally里的代 依然会被 .其 return方法是在try里, catch里,finally里的代 会被 ");
     }
     trace("前面已
return了,此 是不会再 行的.除非没有抛出 错误 ,以使catch里的代 没有被 ");
}
private function throwError():void{
     throw new Error("抛出
错误 ");
}

for...in与for each...in的区
与for...in循
不同的是,for each...in循 中的迭代 量包含属性所保存的 ,而不包含属性的名称(或主 ,索引).

【命名包路径的小技巧】
     使用相
有者和相 关项 目的包名称会比 .按 例来 ,包名称的 开头应该 是逆向的网址名称.例如,如果Example Corp(examplecorp.com)写了一些ActionScript3.0 ,就会把所有 放在com.examplecorp包内(或者 com.examplecorp的子包内).如此一来,如果英国有另一家Example Corp(examplecorp.co.uk)也写了一些ActionScript3.0 ,只要使用包uk.co.examplecorp,就可确保 唯一性.
     当
属于特定 用程序的一部分 ,就 应该 放在 该应 用程序特定的子包内.例如,Example Corp可能有个 用程序名叫WidgetStore.如果WidgetStore 用程序使用一个名 ApplicationManager的 , 应该 放在com.examplecorp.widgetstore包内,或者位于 包的子包内.
     按
例来 ,包名称的 开头 是小写字母.

式的取出方法(getter)和 定方法(setter)】
public function get count():uint {
     return _count;
}
public function set count(value:uint):uint {
     if(value < 100){
         _count = value;
     }else {
         throw Error();
     }
}

【确保 不会有子 ,使用final】
final public class Example{}

super 关键 字的使用】
super(); //父
的构造函数,只能在 类实 例构造函数内部使用
super.propertyName; //
用父 的属性,属性需要声明 public或protected
super.methodName(); //
用父 的方法,方法需要声明 public或protected

【建立常数,使用 关键 const而不是var】
static public const EXAMPLE:String = "example";

检测 播放器版本】
flash.system.Capabilities.version
8.5版以前的任何Flash Player版本, 这种 方法都不适用.

【判断客 端系
flash.system.Capabilities.os

检测 播放器 型】
flash.system.Capabilities.playerType
可能的
:
"StandAlone",用于独立的 Flash Player
"External",用于外部的 Flash Player 或
测试 模式下
"PlugIn",用于 Flash Player
浏览 器插件
"ActiveX",用于 Microsoft Internet Explorer 使用的 Flash Player ActiveX 控件

检测 统语 言】
flash.system.Capabilities.language

【判断用 是否启用了IME( 入法 编辑 )】
flash.system.IME.enabled

检测 屏幕的分辨率】
flash.system.Capabilities.screenResolutionX
flash.system.Capabilities.screenResolutionY

【把 出窗口居中的算法】
X = (舞台
/2)-(窗口 /2)
Y = (舞台高/2)-(窗口高/2)

【控制影片配合Player的方式,包括 问题
stage.scaleMode
可供
选择值 :flash.display.StageScaleMode

【舞台的 对齐 方式】
stage.align
可供
选择值 :flash.display.StageAlign

Flash Player的右
stage.showDefaultContextMenu = false;

检测 是否具有音 功能】
flash.system.Capabilities.hasAudio

检测 播放器是在具有MP3解 器的系 上运行, 是在没有MP3解 器的系 上运行】
flash.system.Capabilities.hasMP3

检测 播放器能 (true) 是不能 (false) 播放流式 视频
flash.system.Capabilities.hasStreamingVideo

检测 播放器是在支持 (true) 嵌入 视频 的系 上运行, 是在不支持 (false) 嵌入 视频 的系 上运行】
flash.system.Capabilities.hasEmbeddedVideo

检测 播放器能 (true) 是不能 (false) 对视频 流(如来自 Web 视频 流) 编码
flash.system.Capabilities.hasVideoEncoder

Flash Player 中的"安全 "面板】
flash.system.Security.showSettings();
可供
选择项 :flash.system.SecurityPanel

其它域的.swf 访问 本域的.swf】
在本域的.swf文件里加上:flash.system.Security.allowDomain()
或 者使用安全策略文件"crossdomain.xml".在Flash 8以前,
个文件必 放在.swf所在域的根目 , ,你可以使用flash.system.Security.loadPolicyFile(),指 定安全策略文件所在的位置.拒 任何域的做法是在<cross-domain-policy> 标签 内什 也不填,安全策略文件也支持通用字符 "*":
<?xml version="1.0"?>
<!-- http://www.mydomain.com/crossdomain.xml -->
<cross-domain-policy>
     <allow-access-from domain="www.riahome.cn " />
     <allow-access-from domain="*.Y-boy.cn" />
     <allow-access-from domain="210.38.196.48" />
     <allow-access-from domain="*" />
</cross-domain-policy>

【数字的不同 制之 转换
parseInt(str:String, radix:uint = 0):Number 返回十
制的数,参数radix表示要分析的数字的基数.如果省略radix,就默 认为 10,除非字符串的 开头 "0x","0X"或"0":
trace(parseInt("0x12")); //
radix 16, :18
trace(parseInt("017")); //
radix 8, :15
或者使用Number,uint和int
象的toString(radix)方法.

【使用Math.round() 一个数取整,四舍五入】
Math.round()
trace(Math.round(204.499)); //
:204
trace(Math.round(401.5)); //
:402

【使用Math.floor() 一个数向下取整,就是只要整数部分而不理会小数分】
trace(Math.floor(204.99)); //
:204

【使用Math.ceil() 一个数向上取整,只要小数部分不 ,整数部分就加1】
trace(Math.ceil(401.01)); //
:402

生一个随机数】
使用Math.random()
生一个 随机数n,其中 0 <= n < 1

【把数字取至最近的小数点位,即指定精确度】
1. 决定你要取的数字的小数点位数:例如,如果你想把90.337取成90.34,就表示你要取到两位小数点位,也就是
你想取至最近的0.01;
2.
让输 除以 1所 的数字(此例 0.01);
3. 使用Math.round()把
2所 得的 取成最近的整数;
4. 把
3所得的 果乘以 2用于除法的那个 .
例如,要把90.337取成两个小数点位数,可以使用:
trace(Math.round(90.337/0.01)*0.01); //
:90.34

【把数字取成一个整数的最接近倍数
例1,
这样 会把92.5取成5的最近倍数 :
trace(Math.round(92.5/5)*5); //
:95
例2,
这样 会把92.5取成10的最近倍数 :
trace(Math.round(92.5/10)*10); //
:90

【在指定数 得随机数】
//可取范
:[min, max]
private function randRange(min:Number, max:Number):Number {
     var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
     return randomNum;
}
用例子:
银币 ,即希望得到随机布 (true 或 false): randRange(0, 1);
投骰子,即希望得到随机六个 : randRange(1, 6);
避免被 存而需要 生一个独一无二的数字追加在URL尾端,通常最佳方法是取得当前毫秒数.

【弧度(radian)与度数(degree)之 转换
从弧度
转为 度数: degrees = radians * 180 / Math.PI
从度数
转为 弧度: radians = degrees * Math.PI / 180

算两点之 的距离】
勾股定理: c2 = a2 + b2
有两个影片剪 mc1和mc2, 两点 的距离c :
var c:Number = Math.sqrt(Math.pow(mc1.x - mc2.x, 2) + Math.pow(mc1.y - mc2.y, 2));

【模 拟圆 周运
已知
o(x0, y0),半径r和弧度angle,求 上任意一点P(x, y)的坐 :
x = x0 + (Math.cos(angle) * r);
y = y0 + (Math.sin(angle) * r);
注意:舞台的x
正方向水平向右,y 正方向垂直向下.

【模 拟椭圆
已知
o(x0, y0), 长轴 a,短 b以及弧度angle,求 上任意一点P(x, y)的坐 :
x = x0 + (Math.cos(angle) * a);
y = y0 + (Math.sin(angle) * b);


氏温度和 氏温度之 转换
氏温度 = 氏度数 * 9 / 5 + 32
氏温度 = ( 氏度数 - 32) * 5 /9

【公斤与磅之 转换
公斤 = 磅 * 2.2
磅 = 公斤 / 2.2

【向数 尾端添加元素】
var array:Array = new Array();
array.push("a", "b");
//向数
尾端添加 一元素也可以 这样 :
array[array.length] = "c";
//如果以索引
定的元素不存在,数 本身会自 动扩 展以包含足 的元素数目.介于中 的元素会被 设为 undefined:
array[5] = "e";
trace(array[4]); //
: undefined

【向数 组开 端添加元素】
var array:Array = ["a", "b"];
array.unshift("c", "d");
trace(array); //
: c,d,a,b

除数 中第一个元素并返回 元素,使用shift()方法】
var letters:Array = new Array("a", "b", "c");
var firstLetter:String = letters.shift();
trace(letters); //
: b,c
trace(firstLetter); //
: a

除数 中最后一个元素并返回 元素的 ,使用pop()方法】
var letters:Array = new Array("a", "b", "c");
trace(letters); //
: a,b,c
var letter:String = letters.pop();
trace(letters); //
: a,b
trace(letter); //
: c

除数 中的元素, 添加新元素并返回 除的元素,使用splice()方法】
splice(startIndex:int, deleteCount:uint, ... values):Array
startIndex: 一个整数,它指定数
行插入或 除的位置 的元素的索引;
deleteCount: 一个整数,它指定要
除的元素数量;
... values: 用逗号分隔的一个或多个
的可 列表或数 ,此列表或数 将插入到此数 中由 startIndex 参数指定的位置.

找数 中第一个相匹配的元素】
var array:Array = ["a", "b", "c", "d", "a", "b", "c", "d"];
var match:String = "b";
for(var i:int = 0; i < array.length; i++) {
     if(array[i] == match) {
         trace("Element with index " + i + " found to match " + match);
         //
: Element with index 1 found to match b
         break;
     }
}

找数 中最后一个相匹配的元素】
var array:Array = ["a", "b", "c", "d", "a", "b", "c", "d"];
var match:String = "b";
for(var i:int = array.length - 1; i >= 0; i--) {
     if(array[i] == match) {
         trace("Element with index " + i + " found to match " + match);
         //
: Element with index 5 found to match b
         break;
     }
}

【把字符串 成数
使用String.split()方法:
var list:String = "I am YoungBoy.";
var words:Array = list.split(" "); //以空格作
分隔符将字符串切割
trace(words); //
: I,am,YoungBoy.

【把数 组转 成字符串】
使用String.join()方法:
var myArr:Array = new Array("one", "two", "three");
var myStr:String = myArr.join(" and ");
trace(myArr); //
: one,two,three
trace(myStr); //
: one and two and three

【使用 象数 组处 理相 数据】
var cars:Array = new Array();
cars.push({make:"Mike", year:1997, color:"blue"});
cars.push({make:"Kelly", year:1986, color:"red"});
for(var i:int = 0; i < cars.length; i++) {
     trace(cars[i].make + " - " + cars[i].year + " - " + cars[i].color);
}
//
:
//     Mike - 1997 - blue
//     Kelly - 1986 - red

【在数 取最小或最大
var scores:Array = [10, 4, 15, 8];
scores.sort(Array.NUMERIC);
trace("Minimum: " + scores[0]);
trace("Maximum: " + scores[scores.length - 1]);

【使用for ... in 关联 元素】
var myObject:Object = new Object();
myObject.name = "YoungBoy";
myObject.age = 20;
for(var i:String in myObject) {
     trace(i + ": " + myObject[i]);
}
//
: name: YoungBoy
//       age: 20
注意: for ... in循
不会 象所有的内建属性.例如,循 行期 新增的特殊属性,但是,不会列出内建 象的方法,即使都是 存在 象属性内.

AVM(ActionScript Virtual Machine,虚 )和渲染引擎(Rendering Engine)】
AVM
负责执 ActionScript程序,而渲染引擎 是把 制在 示器上.

【指出容器的 示清 中有多少 象】
个容器都有numChildren属性.

【把 目新增至 示清
addChild(child:DisplayObject)
addChildAt(child:DisplayObject, index:int)
index: 添加
的索引位置.如果指定当前占用的索引位置, 则该 位置以及所有更高位置上的子 象会在子 列表中上移一个位置.

【从 示清 中移除 目】
removeChild(child:DisplayObject)
removeChildAt(index:int)
index: 要
除的 DisplayObject 的子索引, 之上的任何 象的索引位置都减去1.
如果想移除窗口所有子元件,可以
removeChildAt(),numChildren属性以及for循 .因 为每 次一个子元件被移除 ,索引位置都会 ,所以,有两 方法可以 理所有子元件的移除:
1.
是移除位置0的子元件;
2. 倒
来移除子元件,也就是从尾端 .

【更改 有子 象容器中的位置】
setChildIndex(child:DisplayObject, index:int):void
可能用到的方法:
返回 DisplayObject 的 child
例的索引位置: getChildIndex(child:DisplayObject):int
返回位于指定索引
的子 : getChildAt(index:int):DisplayObject
注 意: 当子元件移到低于它
在所在位置的索引 ,那 ,从 的索引起,直到子元件索引前面的那个索引的所有子元件都会令其索引增加1,而 子元件就会指定至 的 索引.当子元件移到 高索引 ,从 子元件索引之上的那个索引起,直到 的索引的所有子元件都会令其索引往下减1,而 子元件就会指定至 的索引 .

TextField以垂直方式把文字 在按 表面中心点的小技巧】
textField.y = (_height - textField.textHeight) / 2;
textField.y -= 2; //减2个像素以
整偏移量

【外部.swf影片 入和互
1.
init事件;
2. 透
content属性存取所 入的影片.
当所
入的影片做好足 的初始化工作,使其方法和属性可以接受互 动时 ,init事件就会被 .只有在 入器 init事件后,才能控制影片.所 入的影片 没初始化就 着与它互 ,是会 行期 间错误 .
_loader.contentLoaderInfo.addEventListener(Event.INIT, handleInit); //当
入的.swf的属性和方法可用
_loader.load(new URLRequest("ExternalMovie.swf"));
private function handleInit(event:Event):void {
     var movie:* = _loader.content;
     trace(movie.getColor());
     movie.setColor(0xFF0000);
}

TextField有两 种类 : 动态 (dynamic)和 (input),默 认值为动态 .改 TextField 型方法】
field.type = TextFieldType.INPUT; //selectable属性默
认值为 true
flash.text.TextFieldType.INPUT和flash.text.TextFieldType.DYNAMIC

过滤 文字 入】
TextField.restrict = "此
处为 入的内容";
field.restrict = "^此
处为 禁止 入的内容";
restrict属性支持一些
似正 表达式的 :
field.restrict = "a-zA-z"; //只允
大小字母
field.restrict = "a-zA-z "; //只允
字母和空格
field.restrict = "0-9"; //只允
数字
field.restrict = "^abcdefg"; //除了小写字母abcdefg不允
,其它都允
field.restrict = "^a-z"; //所有小写字母都不允
,但是,其它内容都允 ,包括大写字母
field.restrict = "0-9^5"; //只允
数字,但5例外
restrict字符包含具有特殊意 的字母(例如-和^):
field.restrict = "0-9//-"; //允
数字和破折号
field.restrict = "0-9//^"; //允
数字和^
field.restrict = "0-9"; //允
数字和反斜杠
你也可以使用Unicode
转义 序列,指定允 的内容.例如:
field.restrict = "^/u001A";
注意:ActionScript有区分大小写的,如果restrict属性
设为 abc,允 字母的大写形式(A,B和C) 成小写 待形式(a,b和c),反之亦然.restrict属性只影响用 可以 入的内容,脚本可将任何文本放入文本字段中.

入框的最大 度】
TextField.maxChars:int

【向TextField追加内容】
TextField.appendText(text:String):void
与通
过对 text 属性使用加法 赋值 接两个字符串(例如 field.text += moreText)相比,此方法的效率更高.

HTML格式的文字】
TextField.htmlText = "<b>Html text</b>";
支 持的HTML
标签 集有: <b>,<i>,<u>,<font>(有face,size以及color属性),< p>,<br>,<a>,<li>,<img>以及<textformat>(有 leftmargin,rightmargin,blockindent,indent,leading以及tabstops属性,相 TextFormat 的同名属性)

减空白】
TextField.condenseWhite = true;
除具有HTML文本的文本字段中的 外空白(空格, 行符等),如同多数HTML 浏览 器所做的那 .
注意: 在
htmlText 属性之前 condenseWhite 属性

【自 大小 整和 对齐
TextField.autoSize = TextFieldAutoSize.LEFT;
:
flash.text.TextFieldAutoSize.CENTER
flash.text.TextFieldAutoSize.LEFT
flash.text.TextFieldAutoSize.NONE
flash.text.TextFieldAutoSize.RIGHT

【指示文本字段是否自 动换 行】
TextField.wordWrap = true; //自
动换

【用程序手段 滚动 文字】
水平方向以像素
为单 ,而垂直方向以行做 :
scrollV: 指出文字框可
区域的最 ,可 ;
bottomScrollV: 指出文字框内最底端可
,只 ;
maxScrollV: scrollV的最大
,只 ;
numLines: 定
多行文本字段中的文本行数,只 ;
TextField.scrollV = field.maxScrollV; //
滚动 到最后一

【响 应滚动 事件】
field.addEventListener(Event.SCROLL, onTextScroll);

式化文字的方法】
1. 使用HTML
标签进 式化;
2. 使用TextFormat
;
3. 使用CSS.
例如: HTML是用<font>
标签 ,TextFormat 象是 font属性,而CSS是使用font-family属性的.
受支持的
式表(CSS)属性和 ,及其相 ActionScript属性名称(小括号内):
color(color),display(display),font-family(fontFamily),font-size(fontSize),font-style(fontStyle),font-weight(fontWeight),kerning(kerning),leading(leading),letter-spacing(letterSpacing),margin-left(marginLeft),margin-right(marginRight),text-align(textAlign),text-decoration(textDecoration),text-indent(textIndent)
受支持的HTML
: <(小于号: <), >(大于号: >), &(和: &), "(双引号: "), '(撇号, 引号: ')
其中
象的两 写法:
写法一:
var sampleStyle:Object = new Object();
sampleStyle.color = "#FFFFFF";
sampleStyle.textAlign = "center";
css.setStyle(".sample", sampleStyle);
写法二:
var sampleStyle:Object = {color: "#FFFFFF", textAlign: "center"};
css.setStyle(".sample", sampleStyle);

户输 入的文字 式化】
使用defaultTextFormat属性,
式会施加至用 户键 入框的文字身上:
var formatter:TextFormat = new TextFormat();
formatter.color = 0x0000FF; //把文字

field.defaultTextFormat = formatter;

对现 有文字的一部分 式化】
TextFormat.setTextFormat(format:TextFormat, beginIndex:int = -1, endIndex:int = -1):void

定文字框的字体】
例子:
HTML: field.htmlText = "<font face='Arial'>Formatted text</font>";
TextFormat: formatter.font = "Arial";
CSS: P{ font-family: Arial; }
也可以使用以逗号隔
的字体清 : formatter.font = "Arial, Verdana, Helvetica";
注意:
字体和字体群
不同.字体群 有三 : _sans,_serif以及_typewriter.
_sans群
一般就是指Arial或Helvetica 这种 字体;
_serif群
一般就是指Times或Times New Roman 这种 字体;
_typewriter群
一般就是指Courier或Courier New 这种 字体.

【嵌入字体】
使用[Embed]后
设标签 .[Embed]后 设标签应该 ActionScript文件中, 宣告之外.你可以内嵌TrueType字体或系 字体.内嵌TrueType字体 :
[Embed(source="pathToTtfFile", fontName="FontName", mimeType="application/x-font-truetype")]
pathToTtfFile: ttf文件的路径,TrueType字体的路径可以是相
,也可以是 绝对 ;
FontName: 字体名称;
内嵌系
字体的 :
[Embed(systemFont="Times New Roman", fontName="Times New Roman", mimeType="application/x-font-truetype")]
fontName: 以相同名称作
为实际 字体名称.
注 意: 在使用嵌入字体
,要把TextField的embedFonts属性 设为 true, 这样 TextField只能用内嵌字体了.如果你 着替 embedFonts 设为 true的TextField使用 设备 字体,什 都不会 .如果embedFonts 设为 true,就无法指定以逗号相隔的字 体清 .

【建立可以旋 的文字】
使用内嵌字体.当你旋
文字框 , 设备 字体就会消失.

Unicode文字】
1. 从外部来源
Unicode文字;
2. 假如你的
编辑 器支持Unicode(如 Flex Builder), 可以直接在ActionScript程序中使用 字符;
3. 使用Unicode
转义 字符,ActionScript里所有Unicode 转义 字符都以/u 开头 ,后面再跟四位十六 制数字.
注意: 如果你想取得Unicode字符,在Windows下使用:
>所有程序>附件>系 工具>字符映射表.

【把Flash Player的焦点 带给 文字框】
stage.focus = field;
把焦点移除:
stage.focus = null;
注意: 当.swf文件首次
入至网 页浏览 ,并没有焦点.因此,以程序的方式把焦点指定 Flash 用程序的一个元素前,必 先把焦点移至Flash Player.

【以ActionScript 取文字】
使用TextField.setSelection(beginIndex:int, endIndex:int):void
了可以正常 取文字,文字框必 具有焦点:
stage.focus = field; //把焦点
设给 文字框
field.text = "This is example text"; //
定文字
field.setSelection(0, 4); //把"This"
单词 以高亮
使用只
selectionBeginIndex和selectionEndIndex属性 访问 取的字符范 的索引.

【在文字内 定安插点(游 位置)并 访问 位置的索引
可以使用TextField.setSelection()把起始和
尾的索引参数都 成相同 ,在文字内 定游 位置(假 具有焦点):
field.setSelection(0, 0); //在第一个字符前
放安插点
trace(field.caretIndex); //
出游 位置的索引

【当文本字段受到 取或取消 时给 予响
得焦点 : FocusEvent.FOCUS_IN
失去焦点
: FocusEvent.FOCUS_OUT
过键盘 (Tab )把焦点移除 : FocusEvent.KEY_FOCUS_CHANGE
把焦点移除 : FocusEvent.MOUSE_FOCUS_CHANGE
FocusEvent
有一个relatedObject属性.就FOCUS_IN事件而言,relatedObject属性是 有焦点的 象的引用地址; FOCUS_OUT,KEY_FOCUS_CHANGE以及MOUSE_FOCUS_CHANGE事件,relatedObject属性是 接收到焦点的 象的引用地址.
FOCUS_IN和FOCUS_OUT事件都是在焦点改
生的,所以两者都是不可取消的事件. KEY_FOCUS_CHANGE和MOUSE_FOCUS_CHANGE事件,可以使用FocusEvent.preventDefault()方法取消默 :
field.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, onKeyFocus);
private function onKeyFocus(event:FocusEvent):void {
     if(field.text == "") {
         event.preventDefault(); //当field没有任何文字前,不允
使用Tab 把焦点移除
     }
     //event.relatedObject就是
有焦点的 象的引用地址,即下一个 得焦点的 象的引用地址
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值