As3基础部分3
来源:互联网 发布:大数据存储面临的问题 编辑:程序博客网 时间:2024/06/05 11:42
第三部分
1.核心类与函数
1.核心类
- 根基:Object
- 语言结构:Class,Function,Namespace,arguments
- 基本类型:int,Boolean,Number,String,uint
- 常用复杂类型:Array,Date,RegExp
- XML相关类:XML,XMLList,Qname
2.全局函数类
- 类型转化
- 编码解码
- 判值函数
- 字符串转数字函数
- 控制台函数
2.数组
- 访问元素用[]符合
- 数组长度 length
- 使用超过“数组长度-1”的索引值会给新的成员赋值
- 强行减小数组长度会删减数组元素
- 多维数组
查找(indexOf,lastIndexOF)
使用
目标数组.indexOf(元素)
目标数组.indexOf(元素,查找的起始位置)
目标数组.lastIndexOf(元素)
目标数组.lastIndexOf(元素,查找的起始位置)判断查找的满足条件为“===”全等
首尾添加新元素(push,unshift)
- 使用
数组.push(元素1,元素2,…n)
数组.unshift(元素1,元素2,…n)- 使用
删除数组首尾元素(pop,shift)
- 使用
数组.pop();
数组.shift();- 使用
插入,删除元素(splice)
- 使用
数组.splice(删除点的索引,要删除的元素数目,新元素1,…n)
数组.splice(删除点的索引,要删除的元素数目)
数组.splice(删除点的索引)
数组.splice(删除点的索引,0,新元素1,…n)- 使用
获取数组部分元素(slice)
- 使用
数组.slice(起点索引,终点索引)
数组.slice(起点索引)- 使用
合并(concat)
- 使用
数组.concat(参数1,参数2,…n)
- 使用
数组的浅复制和深复制
- 浅复制(concat,slice)
var copy:Array = originalArray.concat();var copy:Array = originalArray.slice();
改动浅复制的引用数组将会导致原数组内容的变化
- 深复制(ByteArray)
//复制foovar foo:Array = [“a string element”,arrayElement , obejctElement];var fooBA:ByteArray = new ByteArray();fooBA.writeObject(foo);fooBA.position = 0;var bar:Array = fooBA.readObject() as Array;
- 浅复制(concat,slice)
排序(reverse,sort,sortOn)
使用
数组.reverse();//将数组中的元素倒序
数组.sort();//默认排序
数组.sort(排序方式(定义好的整数常量));
数组.sort(比较函数(函数名));
数组.sortOn(“name”);//根据指定属性,默认排序
数组.sortOn(“name”,排序方式(定义好的整数常量));
数组.sortOn(“name”,比较函数(函数名));
排序方式
Array.CASEINSENSITVE //值为1,按字母顺序排序(大小写不敏感),按数字从小到大排序
Array.DESCENDING //值为2,字母倒序排序
Array.UNIQUESORT //值为4,必须是唯一性排序,如果比较值结果,则放弃排序
Array.RETURNINDEXEDARRAY //值为8,让sort()和sortOn()函数返回值返回排序后的索引列表,同时保持原数组不变
Array.NUMBIC //值为16,强制ort()和sortOn()中对数值采用从小到大排序
比较函数
function 函数名(参数A:类型,参数B:类型):int{……}
操作数组每个元素(forEach,every,filter,map,some)
//遍历操作 forEach(callback:Function,this.Object:*=null):void//过滤器 filter(callback:Function,this.Object:*=null):Array//映射器 map(callback:Function,this.Object:*=null):Array//有一个满足为真 some(callback:Function,this.Object:*=null):Boolean//全满足为真 every(callback:Function,this.Object:*=null):Boolean
3.字符串String
1.针对字符操作
charAt(i); //访问目标位置的字符
charCodeAt(i); //得到目标位置字符的Unicode字符的整数字符代码
fromCharCode(); //从指定Unicode值得到相应的字符串
2.不变对象
3.重载(+,+=,<,<=,>,>=)
4.常用字符串操作
indexOf()与search()
indexof()参数为普通字符串
search()参数必须为正则表达式
substring(),slice(),substr()
长字符串变量.substring(起始位置,终点位置)
长字符串变量.slice(起始位置,终点位置)
长字符串变量.substr(起始位置,截取字符串长度)
split与正则表达式结合
var str:String = “Sky 666”; var delimiter:RegExp = /(\d+)/ str.split(delimiter);//提取数字
Util工具类
StringUtil.trim(str:String):void //截断字符串首尾空白
StringUtil.substitute(str:String,…rest):String //替换字符串
StringUtil.trimArrayElements(value:String,delimiter:String):String //分割
StringUtil.isWhitespace(character:String):Boolean //检测空白字符
4.XML数据处理
1.语法
根元素(有且只有一个)
开始标记与结束标记
合理嵌套元素
大小写敏感
命名规则
- 元素名字可以包含字母,数字,其他字符
- 元素名字不能以数字或者标点符合开头,不能以(XML,xml,…开头
- 元素名字不包含空格
元素带有属性用””标识
<!--注解-->
- 所有XML文档中文本都会被解析器解析,只有在CDATA部件中会被忽略
2.创建
1.使用构造函数
var foo:String = “<book><name>As3</name> <page>500</page></book>”; var fooXML:XML = new XML(foo);
2.使用XML文本
var kingdaXML = <websites> <site name = “” url=””> <description> .... </description> </site> </websites>
3.操作
- 使用“.”与“@”直接访问XML对象
trace(kingdaXML .site.description);//访问 trace(kingdaXML .site.@name);//访问site中name属性
- 使用“.”与“@”直接访问,修改,创建和删除XML对象
kingdaXML .site.@name = “” //修改site中name属性
- 使用“.”与“@”直接添加和删除XML对象
kingdaXML .site[0].author = new XML();//添加一个空白节点 kingdaXML .site[0].@language = “”//添加属性 delete kingdaXML .site[0].author //delete关键字删除
- 搜索XML对象子元素与属性
- 后裔访问符(..)
kingdaXML..description //访问名为description 的子节点
- 通配符(*)
kingdaXML.site.@*.toXMLString();//查找site子元素的属性返回XMLList对象
- 表达式制定查找子元素条件
kingdaXML.site.(description<10000);
- 表达式制定查找属性条件
kingdaXML.site.(@name == “”);
- 后裔访问符(..)
4.API实现XML操作
appendChild(child:Object):XML
//在当前子元素列表之后添加
var foo:XML = <data/> foo.appendChild(<d>ddd</d>); //输出foo <data> <d>ddd</d> </data>
prependChild(value:Object):XML
//在当前子元素列表之前添加
foo.prependChild(<b>bbb</b>); //输出foo <data> <b>bbb</b> <d>ddd</d> </data>
insertChildAfter(child1:Object,child2:Object):*
//在当前子元素child1之后添加
var cNode:XML = <c>ccc</c>; foo.insertChildAfter(foo.b,cNode); //输出 <data> <b>bbb</b> <c>ccc</c> <d>ddd</d> </data>
insertChildBefore(child1:Object,child2:Object):*
//在当前子元素child1之前添加
var aNode:XML = <a>aaa</a>; foo.insertChildBefore(foo.b,aNode); //输出 <data> <a>aaa</a> <b>bbb</b> <c>ccc</c> <d>ddd</d> </data>
5.XML命名空间
- 方法:
- 为XML加命名空间:
addNameapace()
- 设置与XML对象关联的命名空间:
setNameapace()
- 设置默认命名空间:
default xml namespace
- 为XML加命名空间:
5.异常与错误的捕捉与处理
1.try-catch-finally
try{ //异常嫌疑语句}catch(){ //生成异常对象,终止try //AVM会按catch语句顺序,查找和异常对象对应的catch块 //发现异常对象,捕获由catch块语句处理}finally{ //一定执行}
2.throw抛出异常
public function ThrowError(){try{//生成Error对象抛出 var CustomError_1:TypeError = new TypeError ( “......” , 1200); throw CustomError_1//抛出匿名Error对象 throw new Error(“......”);//抛出一个函数返回Error对象 var errorCause:Number = 5000; throw reportErrorFunc(errorCause);}catch(e:Error){ trace(e); }}
3.自定义异常
public function A extends SecurityError(){ //自己定义代码 .......}
4.AS3中的异常层次与结构
- 良好支持
- Error类所包含的信息量丰富
- 系统预定义异常
- 自动抛出系统预定义异常
- API更准确的异定位
- 不会降低程序执行效率
- 处理异常原则与方式
- 提倡
- 遇到异常就处理
- 针对不同的方法提出具体解决方案
- 保持对异常的记录,总结经验
- 忌讳
- 不要使用空代码处理异常
- 不要用宽广的异常对待具体的问题
- 尽量少使用异常处理机制
- 提倡
5.对异常事件的处理
- 类型:
- 扩展ErrorEvent类的异常事件
- 基于状态类的异常事件
- 处理:
- 添加侦听器,与try功能相似
- 变形侦听器函数,与catch功能相似
- As3基础部分3
- As3基础部分1
- As3基础部分2
- As3基础部分4
- As3基础部分5
- as3基础
- AS3基础
- AS3基础
- as3部分新功能
- as3网络通信基础
- 基础-AS3数据类型
- 基础-AS3数组
- AS3 视觉编程基础
- AS3.0基础
- 转 第十五章 3D 基础 (3)(as3.0)
- AS3.0基础学习笔记(3): 认识类结构
- 转 第十五章 3D 基础 (1)(as3.0)
- 转 第十五章 3D 基础 (2)(as3.0)
- 特征工程-TSA笔记
- 设计模式之对象创建型 — builder 生成器模式
- Jquery 小知识点
- 【JavaSE学习笔记】面向对象_多态、抽象
- HDU 5795 A Simple Nim【博弈】
- As3基础部分3
- 快速排序 java代码 递归
- Codeforces 831 D Office Keys
- android 根据图片url获取bitmap或者drawable,然后再进行压缩处理
- GET与POST请求的区别
- C++的单引号和双引号区别
- 《野火集》
- 调用一次fork返回2次
- super指针