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.数组

  1. 访问元素用[]符合
  2. 数组长度 length
    • 使用超过“数组长度-1”的索引值会给新的成员赋值
    • 强行减小数组长度会删减数组元素
  3. 多维数组
  4. 查找(indexOf,lastIndexOF)

    • 使用

      目标数组.indexOf(元素)
      目标数组.indexOf(元素,查找的起始位置)
      目标数组.lastIndexOf(元素)
      目标数组.lastIndexOf(元素,查找的起始位置)

    • 判断查找的满足条件为“===”全等

  5. 首尾添加新元素(push,unshift)

    • 使用

    数组.push(元素1,元素2,…n)
    数组.unshift(元素1,元素2,…n)

  6. 删除数组首尾元素(pop,shift)

    • 使用

    数组.pop();
    数组.shift();

  7. 插入,删除元素(splice)

    • 使用

    数组.splice(删除点的索引,要删除的元素数目,新元素1,…n)
    数组.splice(删除点的索引,要删除的元素数目)
    数组.splice(删除点的索引)
    数组.splice(删除点的索引,0,新元素1,…n)

  8. 获取数组部分元素(slice)

    • 使用

    数组.slice(起点索引,终点索引)
    数组.slice(起点索引)

  9. 合并(concat)

    • 使用

    数组.concat(参数1,参数2,…n)

  10. 数组的浅复制和深复制

    • 浅复制(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;
  11. 排序(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{……}

  12. 操作数组每个元素(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.语法

  1. 根元素(有且只有一个)

  2. 开始标记与结束标记

  3. 合理嵌套元素

  4. 大小写敏感

  5. 命名规则

    • 元素名字可以包含字母,数字,其他字符
    • 元素名字不能以数字或者标点符合开头,不能以(XML,xml,…开头
    • 元素名字不包含空格
  6. 元素带有属性用””标识

  7. <!--注解-->

  8. 所有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对象子元素与属性
    1. 后裔访问符(..)
      kingdaXML..description //访问名为description 的子节点
    2. 通配符(*)
      kingdaXML.site.@*.toXMLString();//查找site子元素的属性返回XMLList对象
    3. 表达式制定查找子元素条件
      kingdaXML.site.(description<10000);
    4. 表达式制定查找属性条件
      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命名空间

  • 方法:
    1. 为XML加命名空间:addNameapace()
    2. 设置与XML对象关联的命名空间:setNameapace()
    3. 设置默认命名空间:default xml namespace

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中的异常层次与结构

  • 良好支持
    1. Error类所包含的信息量丰富
    2. 系统预定义异常
    3. 自动抛出系统预定义异常
    4. API更准确的异定位
    5. 不会降低程序执行效率
  • 处理异常原则与方式
    • 提倡
      1. 遇到异常就处理
      2. 针对不同的方法提出具体解决方案
      3. 保持对异常的记录,总结经验
    • 忌讳
      1. 不要使用空代码处理异常
      2. 不要用宽广的异常对待具体的问题
      3. 尽量少使用异常处理机制

5.对异常事件的处理

  • 类型:
    1. 扩展ErrorEvent类的异常事件
    2. 基于状态类的异常事件
  • 处理:
    1. 添加侦听器,与try功能相似
    2. 变形侦听器函数,与catch功能相似