AS3及Flex的常用知识

来源:互联网 发布:淘宝怎么抢秒杀商品 编辑:程序博客网 时间:2024/05/25 13:33

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


【鼠

mouseX mouseY

检查变型并返回布
is

检查变型并返回型】
typeof

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

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

【取消默编译模式】
在"Navigator"窗框里右
你的>"Properties">"ActionScriptCompiler">取消"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循中的迭代量包含属性所保存的,而不包含属性的名称(或主,索引).

【命名包路径的小技巧】
     使用相
有者和相关项目的包名称会比.按例来,包名称的开头应该是逆向的网址名称.例如,如果ExampleCorp(examplecorp.com)写了一些ActionScript3.0,就会把所有放在com.examplecorp包内(或者 com.examplecorp的子包内).如此一来,如果英国有另一家ExampleCorp(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

FlashPlayer的右
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

FlashPlayer 中的"安全"面板】
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")); //
radix16,:18
trace(parseInt("017")); //
radix8,: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,虚)和渲染引擎(RenderingEngine)】
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'>Formattedtext</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 NewRoman", 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用程序的一个元素前,必先把焦点移至FlashPlayer.

【以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就是
有焦点的象的引用地址,即下一个得焦点的象的引用地址
}

 

原创粉丝点击