【改变输出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.drame.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就是适才拥有焦点的对象的引用地址,即下一个获得焦点的对象的引用地址
}