As3基础部分3

第三部分


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)
      //复制foo
      var 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功能相似

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值