ActionScript3

【FLASH制作打包工具】
flash命令菜单添加命令:
文件路径:Adobe Flash CS6/Common/Configuration/commands/*.jsfl
 
【Flash Builder4.7 的svn插件】
帮助-安装新软件
 
【Flash Builder4.7打不开的解决办法】
方法一、在C盘搜索workbench.xml , 这个文件应该在flash builder4.7相关的文件夹下面。把这个文件改名成workbench_bak.xml,然后重新打开 Flash Builder4.7 就可以正常打开并使用了。
方法二、如果第一条不管用,找到工作空间的文件夹,把.metadata文件夹删除,然后重新打开Flash Builder4.7,就能正常打开了。打开后会在 “包资源管理器” 中看不到原来的项目,这时点击“文件”菜单,然后点击“导入Flash Builder项目”即可。
 
【Flash Builder 快捷键】
代码助手:Ctrl+Space(简体中文操作系统是Alt+/)
快速修正:Ctrl+1
单词补全:Alt+/
打开外部Java文档:Shift+F2
显示搜索对话框:Ctrl+H
快速Outline:Ctrl+O
打开资源:Ctrl+Shift+R
打开类型:Ctrl+Shift+T
显示重构菜单:Alt+Shift+T
上一个/下一个光标的位置:Alt+Left/Right
上一个/下一个成员(成员对象或成员函数):Ctrl+Shift+Up/Down
选中闭合元素:Alt+Shift+Up/Down/Left/Right
删除行:Ctrl+D
在当前行上插入一行:Ctrl+Shift+Enter
在当前行下插入一行: Shift+Enter
上下移动选中的行:Alt+Up/Down
组织导入:Ctrl+Shift+O
 
2 定位
2.1行内定位
行末/行首:End/Home
前一个/后一个单词:Ctrl+Right/Left
2.2文件内定位
跳到某行:Ctrl+L
上下滚屏:Ctrl+Up/Down
上一个/下一个成员(成员对象或成员函数):Ctrl+Shift+Up/Down
快速Outline:Ctrl+O
2.3跨文件定位
打开声明:F3
打开资源:Ctrl+Shift+R
打开类型:Ctrl+Shift+T
在workspace中搜索选中元素的声明:Ctrl+G
在workspace中搜索选中的文本:Ctrl+Alt+G
在workspace中搜索选中元素的引用:Ctrl+Shift+G
打开调用层次结构:Ctrl+Alt+H
快速层次结构:Ctrl+T
反悔:Ctrl+Z
2.4其它
上一个/下一个光标所在位置:Alt+Left/Right
上一个编辑的位置:Ctrl+Q
 
3 选中
3.1行内选中
选中到行末/行首:Shift+End/Home
选中上一个/下一个单词:Ctrl+Shift+Left/Right
3.2文件内选中
选中闭合元素:Alt+Shift+Up
恢复到上一个选中:Alt+Shift+Down
选中下一个/上一个元素:Alt+Shift+Right/Left
 
4 定位/选中/操作同时
删除行:Ctrl+D
删除下一个/上一个单词:Ctrl+Delete/Backspace
删除到行末:Ctrl+Shift+Delete
在当前行上插入一行:Ctrl+Shift+Enter
在当前行下插入一行: Shift+Enter
上下移动选中的行:Alt+Up/Down
拷贝选中的行:Ctrl+Alt+Up/Down
 
5其它的代码编辑类快捷键
保存:Ctrl+S
保存所有:Ctrl+Shift+S
下一个命中的项(搜索之后):Ctrl+.
注释:Ctrl+/
添加导入:Ctrl+Shift+M
显示快捷键帮助:Ctrl+Shift+L
变为大/小写:Ctrl+Shift+X/Y
 
6 重构
显示重构菜单:Alt+Shift+T
重构-改变方法签名:Alt+Shift+C
重构-移动:Alt+Shift+V
重构-重命名:Alt+Shift+R
 
7 编辑器、视图、透视图切换
下一个编辑器:Ctrl+F6
下一个视图:Ctrl+F7
下一个透视图:Ctrl+F8
最大化当前视图或编辑器:Ctrl+M
激活编辑器:F12
 
8 Debug
F5:Step Into(debug)
F6:Step over(debug)
F7:Step return(debug)
F8:Resume(debug)
F11:debug上一个应用(debug)
 
9 Up/Down/Right/Left类快捷键
Ctrl
前一个/后一个单词:Ctrl+Right/Left
上下滚屏:Ctrl+Up/Down
Alt
上一个/下一个光标的位置:Alt+Left/Right
上下移动选中的行:Alt+Up/Down
Shift
选中上一个/下一个字符:Shift+Left/Right
选中上一行/下一行(从当前光标位置开始):Shift+Up/Down
Ctrl+Shift
上一个/下一个成员(成员对象或成员函数):Ctrl+Shift+Up/Down
选中上一个/下一个单词:Ctrl+Shift+Left/Right
Alt+Shift
选中闭合元素:Alt+Shift+Up
恢复到上一个选中:Alt+Shift+Down
选中下一个/上一个元素:Alt+Shift+Right/Left
拷贝选中的行:Ctrl+Alt+Up/Down
Ctrl+Alt
拷贝选中的行:Ctrl+Alt+Up/Down
 
10 F类快捷键
F2:显示提示/重命名
F3:打开选中元素的声明
F4:打开选中元素的类型继承结构
F5:刷新
F5:Step Into(debug)
F6:Step over(debug)
F7:Step return(debug)
F8:Resume(debug)
F11:debug上一个应用(debug)
F12:激活编辑器
 
【命名规则】
1.尽量使用有含义的英文名作为变量名
2.变量名采用驼峰命名法则
3.变量名符合2个原则,越短越好,越清晰越好
4.尽量避免变量中出现数字编号
 
【AS3]应用中文字体时的英文名参考说明,中文字体,英文名】
Mac OS的一些:
* 华文细黑:STHeiti Light [STXihei]
* 华文黑体:STHeiti
* 华文楷体:STKaiti
* 华文宋体:STSong
* 华文仿宋:STFangsong
* 儷黑 Pro:LiHei Pro Medium
* 儷宋 Pro:LiSong Pro Light
* 標楷體:BiauKai
* 蘋果儷中黑:Apple LiGothic Medium
* 蘋果儷細宋:Apple LiSung Light
Windows的一些:
* 新細明體:PMingLiU
* 細明體:MingLiU
* 標楷體:DFKai-SB
* 黑体:SimHei
* 宋体:SimSun
* 新宋体:NSimSun
* 仿宋:FangSong
* 楷体:KaiTi
* 仿宋_GB2312:FangSong_GB2312
* 楷体_GB2312:KaiTi_GB2312
* 微軟正黑體:Microsoft JhengHei
* 微软雅黑体:Microsoft YaHei
装Office会生出来的一些:
* 隶书:LiSu
* 幼圆:YouYuan
* 华文细黑:STXihei
* 华文楷体:STKaiti
* 华文宋体:STSong
* 华文中宋:STZhongsong
* 华文仿宋:STFangsong
* 方正舒体:FZShuTi
* 方正姚体:FZYaoti
* 华文彩云:STCaiyun
* 华文琥珀:STHupo
* 华文隶书:STLiti
* 华文行楷:STXingkai
* 华文新魏:STXinwei
【e.updateAfterEvent()】
当帧频很低又想一运行立刻更新显示可以用这方法
【e.stopImmediatePropagation()】
防止对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。此方法会立即生效,并且会影响当前节点中的事件侦听器。
【e.stopPropagation()】
防止对事件流中当前节点的后续节点中的所有事件侦听器进行处理。此方法不会影响当前节点 (currentTarget) 中的任何事件侦听器。
【实例.[表示属性的字符串] 等于实例.属性名或者(实例.函数())】
例子:
stage.addEventListener(KeyboardEvent.KEY_DOWN,keydowmFun);
function keydowmFun(e:KeyboardEvent):void
{
var code:uint=e.keyCode;
var funName:Function=this["move"+code];
     if(funName is Function)
{
funName();
}
}
function move38():void
{
     trace("你点击了上键!")
}
【Timer和setInterval()用法】
setInterval()函数和timer的用法相同
setInterval(fun,1000)函数,时间间隔
【enterFrame的用处】
enterFrame的停止方法:时间,位置,位移
【null会自动转化为false】
【getRect()和getBounds()用法】
他们都是返回矩形的坐标点和高度和宽度
getBounds包括笔触,getRect不包括笔触
【影片剪辑的背景填充色】
mc1.opaqueBackground=0xff9900;
【子类继承父类】
当父类的函数无参数的时候,实例化子类会自动调用父类函数
当父类有参数的时候,实例化子类不会调用父类函数,想要调用父类函数,需要使用super();
【静态属性】
当父类里有静态属性时,子类可以可以直接访问,可以省去 (类名.静态属性变量),当子类里的实例属性变量和父类里的静态变量一致时,实例属性会“遮蔽”静态属性;
【final修饰符】
final只与继承有关,指定一个方法不能被重写或者一个类不能被继承(final不能修饰变量和常量,只能修饰方法和类)
用final修饰类后,此类不能被继承,但是可以用聚合等其他关系进行拓展类的功能;
【基础知识】
依赖,聚合,继承3种关系
依赖:
class Person
{
     Person类依赖于Car类
     function buy(car:Car)
}
class Car
{    }
聚合:
class Person
{
     头是人的组成部分
     var head:Head=new Head();
}
class Head
{    }
继承:
class parentClass
{
}
class childClass extend parentClass
{
}
 
【接口】
用interface声明
只能使用public和internal修饰符,来修饰接口定义
接口定义的方法不能包含任何修饰符
想要让一个类实现多继承,其中一种方法是,通过继承一个类后加接口的方式实现
例如:
package
{
public class Sender extends otherClass implelments IEventdispatcher
{ }
}
了解类中实现方法的规则:
1 只能使用public修饰符实现方法
2 使用与接口相同名称的方法
3 拥有相同数量的参数,并且与之想匹配
4 相同的返回类型
【工厂模式】
1.简单工厂模式图
2.工厂方法模式
工厂方法模式相对于简单工厂模式的优点:对修改封闭,对扩展开放
【抽象类和抽象方法】
抽象类不能实例化,只能被继承,需要在类的构造函数中加上例如:
throw new Error(“抽象类不能实例化”)
抽象方法 也是和抽象类一样的道理
throw new Error (“抽象方法”)
【模板方法】
依赖于继承,和多态
大致分为3中类型的方法,
1.在父类中实现
2.在父类中实现一部分,在子类中实现一部分
3.在子类中实现
【多态】
相同的方法,不同的实现,例如:override
【override重写方法】
当要写重写方法时,基类需要注意2点
1.实例方法的时候,不能使用final关键字声明方法
2.不能使用private访问控制说明符声明方法
子类需要注意是
1.相同级别的访问控制
2.相同参数数量
3.相同参数的数据类型
4.相同返回类型
super的使用
【类加载与应用程序域】
 
【contextMenu右键菜单添加方法】
例子:
//创建ContextMenu并引用
var myContextMenu:ContextMenu=new ContextMenu();
//创建名为zhaoxu的菜单选项
var item:ContextMenuItem=new ContextMenuItem("zhaoxu");
var item2:ContextMenuItem=new ContextMenuItem("biubiu");
//注册选中菜单事件
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,menuSelectHandler);
item2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,menuSelectHandler2);
//把菜单添加到ContextMenu中
myContextMenu.customItems.push(item,item2);
//隐藏内建菜单
myContextMenu.hideBuiltInItems();
//引用实例属性
this.contextMenu=myContextMenu;
function menuSelectHandler(e:ContextMenuEvent):void
{
trace("this is zhaoxu!")
}
function menuSelectHandler2(e:ContextMenuEvent):void
{
trace("biubiubiu!")
}
【迭代子模式】
迭代子模式主要有4个部分组成、抽象迭代,抽象聚集,具体迭代,具体聚集
【while与do while】
while是测试判断条件,再执行语句
do while是先执行语句,再判断条件(do while 循环会至少执行一次)
【navigateToURL跳转页面】
 
【正则表达式收藏】
正则表达式的作用:模式匹配,模式替换
红色字体为常用的正则
^\d+$  //匹配非负整数(正整数 + 0)
^[0-9]*[1-9][0-9]*$  //匹配正整数
^((-\d+)|(0+))$  //匹配非正整数(负整数 + 0)
^-[0-9]*[1-9][0-9]*$  //匹配负整数
^-?\d+$    //匹配整数
^\d+(\.\d+)?$  //匹配非负浮点数(正浮点数 + 0)
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$  //匹配正浮点数
^((-\d+(\.\d+)?)|(0+(\.0+)?))$  //匹配非正浮点数(负浮点数 + 0)
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$  //匹配负浮点数
^(-?\d+)(\.\d+)?$  //匹配浮点数
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$    //匹配email地址
^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$  //匹配url
匹配中文字符的正则表达式: [\一-\龥]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$
下表是元字符及其在正则表达式上下文中的行为的一个完整列表:
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。
{n} n 是一个非负整数,匹配确定的n 次。
{n,} n 是一个非负整数,至少匹配n 次。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。
. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符,请使用象 ’[.\n]’ 的模式。
(pattern) 匹配pattern 并获取这一匹配。
(?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。
(?!pattern) 负向预查,与(?=pattern)作用相反
x|y 匹配 x 或 y。
[xyz] 字符集合。
[^xyz] 负值字符集合。
[a-z] 字符范围,匹配指定范围内的任意字符。
[^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。
\B 匹配非单词边界。
\cx 匹配由x指明的控制字符。
\d 匹配一个数字字符。等价于 [0-9]。\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。
\W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。
\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。
\num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。
\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。
\nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八
*******************************************************************************************************************************************************************************************
非负整数(正整数 + 0):
^d+$
正整数:
^[0-9]*[1-9][0-9]*$
非正整数(负整数 + 0):
^((-d+)|(0+))$
负整数:
^-[0-9]*[1-9][0-9]*$
整数:
^-?d+$
非负浮点数(正浮点数 + 0):
^d+(.d+)?$
正浮点数:
^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0):
^((-d+(.d+)?)|(0+(.0+)?))$
负浮点数:
^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数:
^(-?d+)(.d+)?$
由26个英文字母组成的字符串:
^[A-Za-z]+$
由26个英文字母的大写组成的字符串:
^[A-Z]+$
由26个英文字母的小写组成的字符串:
^[a-z]+$
由数字和26个英文字母组成的字符串:
^[A-Za-z0-9]+$
由数字、26个英文字母或者下划线组成的字符串:
^w+$
email地址:
 
^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$
url:
^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
小数:
^([-+]?[0-9]+.?[0-9]+)$
在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
只能输入数字:
^[0-9]*$
只能输入n位的数字:
^d{n}$
只能输入至少n位数字:
^d{n,}$
只能输入m-n位的数字:
^d{m,n}$
只能输入零和非零开头的数字:
^(0|[1-9][0-9]*)$
只能输入有两位小数的正实数:
^[0-9]+(.[0-9]{2})?$
只能输入有1-3位小数的正实数:
^[0-9]+(.[0-9]{1,3})?$
只能输入非零的正整数:
^+?[1-9][0-9]*$
只能输入非零的负整数:
^-[1-9][0-9]*$
只能输入长度为3的字符:
^.{3}$
只能输入由26个英文字母组成的字符串:
^[A-Za-z]+$  
只能输入由26个大写英文字母组成的字符串:
^[A-Z]+$  
只能输入由26个小写英文字母组成的字符串:
^[a-z]+$  
只能输入由数字和26个英文字母组成的字符串:
^[A-Za-z0-9]+$  
只能输入由数字、26个英文字母或者下划线组成的字符串:
^w+$  
正确格式为:以字母开头,长度在6-18之间)
^[a-zA-Z]w{5,17}$  
验证用户密码(大于6个字符小于20、必须包含一个特殊字符 、至少包含一个数字:
(?=^.{6,20}$)(?=(.*d){1,})(?=(.*W){1,}).*  
验证是否含有^%&’,;=?$"等字符:
[^%&',;=?$x22]+ 
只能输入汉字:
^[u4e00-u9fa5],{0,}$"   ||||  ^[u4E00-u9FA5]*$  
验证Email地址:
^[-_A-Za-z0-9]+@([_A-Za-z0-9]+.)+[A-Za-z0-9]{2,3}$  
验证InternetURL:
^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$  
验证电话号码:
正确格式为:"XXXX-XXXXXXX","XXXX-XXXXXXXX","XXX-XXXXXXX","XXX-XXXXXXXX","XXXXXXX","XXXXXXXX"。
^((d{3,4})|d{3,4}-)?d{7,8}$  
验证身份证号(15位或18位数字):
^d{15}|d{}18$ 
验证一年的12个月:
正确格式为:"01"-"09"和"1""12"
^(0?[1-9]|1[0-2])$
验证一个月的31天:
正确格式为:"01""09"和"1""31"
^((0?[1-9])|((1|2)[0-9])|30|31)$
例子:
package com.qiye.regexp
{
/**
  * 常用正则表达式。
  * 
  */
public class RegExpFunc
{
  public function RegExpFunc()
  {
 
  }
 
  /**
   * 匹配Email地址的正则表达式函数.
   * @param str : 传入参数.
   */
  public  function  regEmail(str:String):Boolean 
  {
       var  pattern:RegExp  =/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
       var  result:Object  =  pattern.exec(str);
       if (result  ==   null )
       {
        return   false;
        }
        return   true ;
  }
 
  /**
   * 匹配帐号是否合法(字母开头,允许5-31字节,允许字母数字下划线).
   * @param str : 传入参数.
   */
  public  function  regUserName(str:String):Boolean 
  {
      var  pattern:RegExp  =/^[a-zA-Z][a-zA-Z0-9_]{4,30}$/;
      var  result:Object  =  pattern.exec(str);
       if (result  ==   null )
      {
           return   false ;
       }
      return   true ;
  }
  /**
   * 验证用户密码:(正确格式为:以字母开头,长度在6-18之间,允许字母数字下划线).
   * @param str : 传入参数.
   */
  public  function  regUserPwd(str:String):Boolean 
  {
      var  pattern:RegExp  =/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/;
      var  result:Object  =  pattern.exec(str);
      if (result  ==   null )
       {
            return   false ;
       }
       return   true ;
  }
  /**
   * 验证用户手机号码长度.
   * @param str : 传入参数.
   */
  public  function  regPhoneNumber(str:String):Boolean 
  {
       var  pattern:RegExp  =/^[0-9]{11}$/;
       var  result:Object  =  pattern.exec(str);
       if (result  ==   null )
       {
    return   false ;
       }
       return   true ;
}
【textfield的输入内容,限制,格式检查】
限制输入内容
(一)、my_txt.restrict = "A-Z 0-9";               仅允许在文本字段中输入大写字符、空格和数字  
(二)、my_txt.restrict = "^a-z";                  包含除小写字母之外的所有字符,如果此时输入大写字母,则会自动被转为大写字母
(三)、my_txt.restrict=String.fromCharCode(0x4E00)+"-"+String.fromCharCode(0x9FA5);              只能输入中文
 my_txt.restrict="一-龥";                   只能输入中文的简写形式,因为"一"和"龥"的编码分别对应为0x4E00和0x9FA5。
(四)、my_txt.restrict="^"+String.fromCharCode(0x4E00)+"-"+String.fromCharCode(0x9FA5);          除中文以外的所有字符
 my_txt.restrict="^"+"一-龥"                除中文以外的所有字符的简写形式。
(五)、my_txt.restrict = "A-Z^Q";                 可以在字符串中的任何地方使用 ^,以在包含字符与排除字符之间进行切换。 这段代码只包含除大写字母 Q 之外的大写字母,如果此时输入小写字母的话,则会自动被转为大写字母
格式检查
if (emailtxt.text.charAt(0) == "." || emailtxt.text.charAt(0) == "@" || emailtxt.text.indexOf("@", 0) == -1 || emailtxt.text.indexOf(".", 0) == -1 || emailtxt.text.indexOf(".@", 0) != -1 || emailtxt.text.indexOf("@.", 0) != -1 || emailtxt.text.indexOf("..", 0) != -1 || emailtxt.text.lastIndexOf("@") != emailtxt.text.indexOf("@") || emailtxt.text.lastIndexOf("@") == emailtxt.text.length - 1 || emailtxt.text.lastIndexOf(".") == emailtxt.text.length - 1){
errorinfo.text = "Email的格式不正确!";return;}
(二)、去除字符串前面的空格和跳格符
var src:String=" Hello! "; trace(src); //原文本
trace(src.replace(/^\s*/g,"")); //去掉前面的空格
trace(src.replace(/\s*$/g,"")); //去掉后面的空格
(三)、验证邮编
 var pattern:RegExp=/[1-9]\d{5}(?!\d)/;//初始化正则表达式类
//需要验证的字符串
var code:String="123456";
var errCode:String="1234";
//输出结果
trace("验证正确的邮政编码的结果:"+pattern.test(code));
trace("验证错误的邮政编码的结果:"+pattern.test(errCode));
(四)、验证身份证
var pattern:RegExp=/ \d{15}|\d{18}/; //初始化正则表达式类
//需要验证的字符串
var idCard:String="123456789123456789";
var errIdCard:String="1234";
//输出结果
trace("验证正确的身份证的结果:"+pattern.test(idCard));
trace("验证错误的身份证的结果:"+pattern.test(errIdCard));
【as元字符】
^   字符:
1.匹配字符串的开始。
2.当多行标志设置为true的时候,匹配每行开始处的模式。
3.在【】使用时,表示除【】字符之外的字符。
$   字符:
1.匹配字符串的结尾。
2.当多行标志设置为true的时候,匹配每行结尾处的模式。
\   字符:
转义,即匹配\后面的字符。
.   字符:
1.匹配任何单字符。
2.如果点标记设置为true的话,能匹配换行符。
*   字符:
匹配他前面的0到多个字符
+   字符:
匹配他前面的1到多个字符
?   字符:
匹配他前面的0到多个字符
()  字符:
将字符和模式组合到一起
[]  字符:
匹配括号内的任何字符
|   字符:
相当于或的操作,匹配多种条件的字符
在as中“*”,“+ ”,“? ”表示匹配字符的数量,可以把这些元字符称为数量词。
对于一些常用的字符,as3已经预先定义了一些字符来表示,对于这些预先定义的叫元序列。
例:
\d 数字,相当于[0-9]
\D 非数字,相当于[^0-9]
\f 换页符
\n 换行符
\r 回车符
\s 任何空白字符,如空格,制表,换行符,回车
\S 任何非空白子符
\t 制表符
\w 数字、字母、下划线,相当于[0-9a-zA-Z_]
\W 非数字、字母、下划线,相当于[^0-9a-zA-Z_]
\unnnn 使用Unicode码表示的字符,用4位16进制表示。
\xnn 使用ASCII表示的字符,用2位16进制表示。
【xml文件中使用CDATA】
当xml文件中出现多余的“>”或者“<”xml会报错
例如:
<root>a>b</root>
这样就需要使用CDATA  例如:
<root><![CDATA[a>b]]></root>就可以了
或者使用xml中的特殊字符:
1. >   用   &gt;
2. <   用   &lt;
3.  '    用   &apos;
4.  "   用   &quot;
5.  &  用   &amp;
【定义变量的几种方法】
1.var  2. 动态的向对象添加属性   3.属性面板添加属性
【Number用法】
toFixed()输出的是字符串  例:
【三元运算符】
条件表达式?表达式2:表达式3
if(条件表达式)
{
    表达式2
}
else
{
    表达式3
}
【is和as的用法】
is用来判断 这个变量是否属于这个类型
trace(9 is Number)  true
as用来判断 这个变量是否属于这个类型 属于则返回这个变量,不属于则返回null;
trace(9 as Number)9;
trace(9 as Array) null;
【in关键字】
in是用来判断一个对象是否作为另一个对象的key值或者索引,存在返回true,
不存在则返回false;
var arr:array=[1,2,3,4];
trace(2 in arr);  true;
trace(5 in arr);  false;
var obj:object={name:jhon,age:20};
trace(”name“in obj)  true;
trace(”age“in obj); true;
var  dic:dictionary=new dictionary();
dic[a]="a value";
dic[b]="a value";
trace(a in dic);   true;
trace(b in dic);   true;
trace(value in dic);  false;
【break和continue用法】
break是跳出循环体,再不循环
continue是跳出本次循环,继续进行循环;
for(var i:int=0;i<5;i++)
{
    if(i==3)break;
    trace(i)//0 1 2
}
for(var j:int=0;j<5;j++)
{
    if(j==3)continue
    trace(i)//0 1 2 4
}
【delete的使用方法】
deleted的用法在as3中用到的很少,
var obj:object={name:”lily“,age:25}
delete obj.name//正确
或者使用 obj=null这个比delete好用多了
【加载swf的时候如何取数据】
Security.allowDomain("*");
Security.allowInsecureDomain("*");
stage.scaleMode = StageScaleMode.NO_SCALE;
data = stage.loaderInfo.parameters["data"];
【位移运算】
左位移就相当于乘以2的几次方
eg:
x = x * 2;
x = x * 64;
//相当于:
x = x << 1;
x = x << 6;
右位移就相当于除以2的几次方
x = x / 2;
x = x / 64;
//相当于:
x = x >> 1;
x = x >> 6;
【提取颜色组成成分】
//24bit
var color:uint = 0x336699;
var r:uint = color >> 16;
var g:uint = color >> 8 & 0xFF;
var b:uint = color & 0xFF;
//32bit
var color:uint = 0xff336699;
var a:uint = color >>> 24;
var r:uint = color >>> 16 & 0xFF;
var g:uint = color >>> 8 & 0xFF;
var b:uint = color & 0xFF;
【合并颜色组成成分】
//24bit
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = r << 16 | g << 8 | b;
//32bit
var a:uint = 0xff;
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = a << 24 | r << 16 | g << 8 | b;
【自增/自减】
i = -~i; // i++
i = ~-i; // i--
【取反】
i = -i;
//相当于:
i = ~i + 1;
//或者
i = (i ^ -1) + 1;
【getSize方法】
getSize方法,是显示对象在内存中占的字节数
【Math.random和Math.floor比较】
在使用正数的时候 Math.random要比Math.floor快很多
【System.totalMemory】
获取当前内存占用量
【tweenMax各种缓动】
 1,Linear变化
字面意思就很好理解,线性变化,就是匀速。
 2,Back变化。
Back有回来的意思,在缓动前,会先往回运动一段距离。
 3,Bounce变化。
顾名思义,在变化前会几次回归原点,好像在弹一样。
 4,Circ变化。
运动的曲线是一个圆形的弧度。
 5,Cubic变化。
跟圆形变化差不多,不过更平滑些。
 6,Elastic变化
跟Back变化有点像,但是会有一个很强的波动。在EaseIn和EaseOut时尤为明显。
 7,Expo变化
一直很平缓,在最后一点完成所有变化
8,Quad变化
9,Quart变化。
10,Quint变化
11,Sine正弦变化
12,Strong变化。
以上是12种内置的变化,所以准确来说是有36种的,那剩下的4个类是做什么的呢。
 13,EaseLookup
包含一个静态方法fine(),可以通过字符串String直接取得ease的实例。方便一些反射操作的需要。例:
TweenMax.to(ball, 1, { x:200,ease:EaseLookup.find("backEaseInOut") } );
14,FastEase
AS3的TweenMax版本有内置的算法可以加速缓动效果。需要用这个类的静态方法activate()手动打开。可以提高35%~80%的缓动计算,提高2%~15%的整个缓动效率。
可以被加速的缓动变化包括:Linear Quad Cubic Quart Quint Strong这六种而已。打开方法,例:
FastEase.activate([Strong, Linear, Quad]);
还有另外一个静态方法activateEase(ease:Function, type:int, power:uint):void,是用来把这种优化方法用在非com.greensock的缓动上的,例如用在AS3自带的缓动类。
15,RoughEase
RoughEase(strength:Number = 1, points:uint = 20, restrictMaxAndMin:Boolean = false, templateEase:Function = null, taper:String = "none", randomize:Boolean = true, name:String = "")
通常的缓动变化都是很平滑的,如果想要一个不平滑的效果,就可以使用RoughEase。
这里列出的是他的构造方法,其中:
strength:Number:随机点的幅度。
points:uint:随机点的数量。
restrictMaxAndMin:Boolean:当设为true时,随机数的变化会在初始值和终点值之间波动。当为false时,随机数的变化可能会超过这个区间。
templateEase:Function:随机点作用的缓动模板。默认是Linear.easeNone。
taper:String:随机变化趋向那一端,"in”的话趋向于起点,"out"的话趋向于终点。默认是"none"。
randomize:Boolean:设为true时,缓动位置将会随机变化。如果为false时,缓动位置将会锯齿型变化。
name:String :为roughEase实例命名,这样以后可以使用静态方法byName()获取引用。
用法:
例1,直接使用:TweenLite.to(ball, 2, {y:0, ease:RoughEase.create(1, 20, true, Bounce.easeInOut)});
例2,生成实例调用:
var _roughEase:RoughEase = new RoughEase(1,20,true, Strong.easeOut, "none", true, "superRoughEase");
然后直接调用:TweenLite.to(mc, 3, {y:300, ease:rough.ease});
或者:TweenLite.to(mc, 3, {y:300, ease:RoughEase.byName("superRoughEase")});
16,CustumEase
自建缓动效果。基本不能直接编写。需要登录这个网址http://blog.greensock.com/customease/使用图形界面工具生成代码。然后COPY代码到你的项目中应用。例:
创建:CustomEase.create("myCustomEase", [{s:0,cp:0.814,e:0.908},{s:0.908,cp:1.002,e:0.376},{s:0.376,cp:-0.25,e:1}]);
使用:
TweenMax.to(mc, 2, {x:"250", ease:CustomEase.byName("myCustomEase")});
【最大程度减小cpu】
当一个显示对象不需要要鼠标交互时,要使用mouseEnabled和mouseChildren,这样会减少CPU的消耗
vector的读写访问速度比array快,尽可能使用vector对象api,因为他们可能运行更快
绘图api
drawpath
drawTriangles
drawGraphicsData
路径越复杂,drawpath()方法获得性能越高
setVector绘制像素
使用string方法(indexOf,substr,substrting等)代替正则表达式实现字符串查找和提取。
其他方面优化:
textfield对象,要使用appendText()不要使用“+=”,因为“+=”用的CPU更多。
尽量少使用中括号。
StageQuality。low,StageQuality。medium,StageQuality。high,StageQuality。best
尽量少使用alpha属性
sprite.cacheAsBitmap=boolean
 5.10
Starling专业游戏UI编辑器FairyGUI已经完美支持Starling2.x版本,老版本用户可以无痛升级,无需修改任何代码
4.1
基本三角函数的计算: 
角的正弦值 = 对边 / 斜边 
角的余弦值 = 邻边 / 斜边 
角的正切值 = 对边 / 邻边 
角度制与弧度制的相互转换: 
弧度 = 角度 * Math.PI / 180 
角度 = 弧度 * 180 / Math.PI 
计算两点间距离: 
dx = x2 – x1; 
dy = y2 – y1; 
dist = Math.sqrt(dx*dx + dy*dy); 
缓动公式: 
sprite.x += (targetX - sprite.x) * easing;//easing为缓动系数变量 
sprite.y += (targetY - sprite.y) * easing; 
弹性公式: 
vx += (targetX - sprite.x) * spring;//spring为弹性系数 
vy += (targetY - sprite.y) * spring; 
sprite.x += (vx *= friction);//friction为摩擦力 
sprite.y += (vy *= friction); 
偏移弹性公式: 
var dx:Number = sprite.x - fixedX; 
var dy:Number = sprite.y - fixedY; 
var angle:Number = Math.atan2(dy, dx); 
var targetX:Number = fixedX + Math.cos(angle) * springLength; 
var targetY:Number = fixedX + Math.sin(angle) * springLength; 
向鼠标旋转(或向某点旋转) 
dx = mouseX - sprite.x; 
dy = mouseY - sprite.y; 
sprite.rotation = Math.atan2(dy, dx) * 180 / Math.PI; 
波形运动: 
public function onEnterFrame1(event:Event):void { 
ball.y=centerScale+Math.sin(angle)*range; 
angle+=speed; 
心跳: 
public function onEnterFrame1(event:Event):void { 
ball.scaleX=centerScale+Math.sin(angle)*range; 
ball.scaleY=centerScale+Math.sin(angle)*range; 
angle+=speed; 
圆心旋转: 
public function onEnterFrame(event:Event):void { 
ball.x=centerX+Math.cos(angle)*radius; 
ball.y=centerY+Math.sin(angle)*radius; 
angle+=speed; 
椭圆旋转: 
public function onEnterFrame(event:Event):void { 
ball.x=centerX+Math.cos(angle)*radiusX; 
ball.y=centerY+Math.sin(angle)*radiusY; 
angle+=speed; 
颜色运算得到透明值: 
var t:uint=0×77ff8877 
var s:uint=0xff000000 
var h:uint=t&s 
var m:uint=h>>>24 
trace(m) 
转换为十进制: 
trace(hexValue); 
十进制转换为十六进制: 
decimalValue.toString(16) 
颜色提取: 
red = color24 >> 16; 
green = color24 >> 8 & 0xFF; 
blue = color24 & 0xFF; 
alpha = color32 >> 24; 
red = color32 >> 16 & 0xFF; 
green = color32 >> 8 & 0xFF; 
blue = color232 & 0xFF; 
按位计算得到颜色值: 
color24 = red << 16 | green << 8 | blue; 
color32 = alpha << 24 | red << 16 | green << 8 | blue; 
过控制点的曲线: 
// xt, yt是你想要让曲线通过的那一点 
// x0, y0 和x2, y2 是曲线的终点 
xt * 2 – (x0 + x2) / 2; 
y1 = yt * 2 – (y0 + y2) / 2; 
moveTo(x0, y0); 
curveTo(x1, y1, x2, y2);
【继承和复合】
继承中---私有方法一个误区
var foo:student=new student();
foo.test();
//trace("phone");
当子类和父类的私有方法名称一样时,如果子类重写后才会调用子类里面的方法
//trace("yeyeye");
class Player
{
     private function hello():void
     {
          trace("phone");
     }
     public function test():void
     {
          hello();
     }
}
class student extends Player
{
      private function hello():void
      {
           trace("yeyeye");
      }
      /*override public function test():void
      {
           hello()    
      }*/
 }
【super】
子类在调用父类方法时,或者重写父类方法,或者在原父类方法基础上再添加一些内容,需要调用原有方法,
但是不需要重写原有方法时,可以见super看做一个变量,super持有对父类函数的引用(就是父类函数),
super不能用在静态方法中。
【getQualifiedClassName用法】
var sp:MyMovieClip=new MyMovieClip();
//MyMovieClip
用于获取实例的类名
trace(getQualifiedClassName(sp));
【getQualifiedSuperclassName用法】
//flash.display::DisplayObjectContainer
trace(getQualifiedSuperclassName(sp))
用于获取实例超类的类名
【describeType用法】
var str:String=new String();
//<type name="String" base="Object" isDynamic="false" isFinal="true" isStatic="false">
  <extendsClass type="Object"/>
  <constructor>
    <parameter index="1" type="*" optional="true"/>
  </constructor>
  <accessor name="length" access="readonly" type="int" declaredBy="String"/>
</type>
trace(describeType(str));
可以获取非常详细的类信息
【getDefinitionByName用法】
//class movieclip
trace(flash.utils::MovieClip)
把字符串转换成类,引用
【namespace的本质及用法】
namespace类有2个属性,
1prefix 即前缀,处理xml的时候才会用到
2uri就是namespace命名空间的标识(2种方法:①给他一个URL 例如:http://www.baidu.com
②让系统给赋值一个命名空间 例如:namespace kindle)就可以了
获取到包外类的方法,属性2种方法,
1.use namespace ball   //use namespace不受上下文影响,不论在哪个位置,都会同时调用
var p:Player=new Player();
p.da();//ball
2. var p:Player=new Player();
p.ball::da();//ball
//包外类
namespace ball;
namespace phone;
Class Player
{
     ball function da():void
     {
          trace("ball");
     }
     phone function da():void
     {
          trace("phone");
     }
     public function getName():Namespace
     {
          return this.ball//报错
          return Player.ball//可以运行
          return ball;  所以这儿返回的是静态成员
     }
}
使用了use namespace之后再用 “::”限定符 指明同一个函数或者,属性会报错
namespace用于:
①防止命名冲突
②更灵活的访问控制
③实现不公开的api
实现多个版本控制(例如debug版本和release版本或者其他语言版本的区分)
自定义命名空间的继承:
【as3有28个核心类分为7个群】
根类 object
语言结构 class function namespace arguments
基本类型 int boolean number string uint
复杂类型 array date regexp
xml相关类 xml xmllist qname 
异常类 error argumenterror definitionerror evalerror rangeerror referenceerror securityerror syntaxerror typeerror  urierror verifyerror
工具类 math

posted @ 2022-03-21 21:21  fan~~~  阅读(37)  评论(0编辑  收藏  举报