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