As3基础部分4

第四部分


1.AS3的API概览

1.API总览

  • 分为三个部分
    • Flash Player提供的API(核心
    • Adobe官方产品提供的API
    • 第三方提供的API

2.架构

3.第三方类库提供API

  • corelib
    1. com.adobe.crypto:提供常用加密算法
    2. com.adobe.images:提供将位图转换成JPG,PNG的编码器
    3. com.adobe.serialization.json:对JSON的支持
    4. com.adobe.utils:一组实用的数组,字符串,XML,字典等工具类
  • Flex Component Kit for Flash CS3
  • as3flexunitib

2.事件发送和处理

1.事件处理机制的产生与原理

  • DOM3事件处理机制( 数据的提供者只管发出数据对象,只要确保对象是flash.events.Event类或其子类的实例即可。)
    1. 事件(Event):数据对象(包含:事件类型(Type),事件目标(Target),事件数据(Data))
    2. 事件发送者(Event dispatcher):数据对象发出者
    3. 事件侦听者(Event listener):接受事件的对象
  • DOM3事件执行流程
    1. 注册侦听器:发出事件由哪个对象的哪个方法来接受
    2. 发送事件:发送的事件类型与侦听器注册类型匹配
    3. 侦听事件
    4. 移除侦听器

2.事件

1.Event类的属性(只读属性)(type,target,cuttrentTarget,eventPhase,bubbles,cancelable)
  • type:存储事件对象的名称,字符串类型
  • target:持有引用,指向最初发出事件的哪个对象,Object类型
  • cuttrentTarget,eventPhase,bubbles:事件流机制相关属性
  • cancelable:事件引起的默认动作是否可以被取消,Boolean类型
2.Event类的构造函数

public function Event(type:String, bubbles:Boolean = false , cancelable:Boolean = false)
* 生成事件对象:

var evt:Event = new Event(Event.COMPLETE);
var evt:Event = new Event(Event.CHANGE,true,false);
3.Event类的方法
  • clone():返回当前事件对象的一个拷贝(通常EventDispatcher类自动调用)
  • toString():返回对象表示值的字符串形式
  • formatToString():重写toString(),返回字符串中加入新的事件实例属性
  • isDefaultPrevented()和preventDefault():阻止事件默认行为的发生
  • stopImmediatePropagation()和stopPropagation():阻止事件的传播,使侦听器失效。
4.自定义事件类
  • 当事件对象中加入格外的属性和方法
  • 创建:
    1. 新建类,证明继承Event类或子类
    2. 在类中添加静态常量,规范新的事件类会有哪些事件类型
    3. 重写构造函数,clone()方法,toString()或formatToString()方法
public class OrderEvent extends Event{
public static const ORDER_DISHES:String = ‘点菜’;
private var _dishes:Array; //存储点的菜名
public function OrderEvent(){
        super(ORDER_DISHES);//将静态属性ORDER_DISHES作为事件默认类型
}
//OrderEvent 的getter和setter方法:客人点的菜名清单
public function set dishes(dishesAry:Array):void{
        _dishes = dishesAry;
}
public function get dishes():Array{
        return _dishes ;
}
override public function toString():String{
        return formatToString(“...”);
}
override public function clone():Event{
//确保返回当前类的实例
        var tmpEvt:OrderEvent = new OrderEvent();
        tmpEvt._dishes = _dishes;
        return tmpEvt;
        }
}

3.侦听器

  1. 事件侦听器必须为Function类型
  2. 事件发送者必须是EventDispatcher类或者其子类的实例
  3. 事件发送者的实例方法

    public function addEventListener(type:String, listener:Function):void

    type:事件类型名称

    listener:处理事件的侦听器

  4. 创建

    function listenerName(evt:Event):void{…}

  5. 移除侦听器

    事件发送者.removeEventListener(事件类型,侦听器);

  6. 检测侦听器

    1.hasEventListener(type:String):Boolean

    2.willTrigger(type:String):Boolean//可以检查显示列表对象事件流所有阶段中的所有父级上的侦听器

  7. 事件优先级

    public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void

    第四个参数为事件优先级参数,数字越大,优先级越高

  8. 事件弱引用

    第5个参数表示:

    强引用(默认值):防止侦听器被当作垃圾回收

    弱引用:为了防止无意识的对象保留引起的内存泄漏

4.自定义类发送事件的方式

  • 继承EventDispatcher类
  public class KingdaSampleDispatcher extends EventDispatcher{
  public static var ACTION:String = “action”;
  public function doSomething():void{
      //......代码
      //发送事件
          dispatcherEvent(new Event(KingdaSampleDispatcher.ACTION));
      }
  }
  • 复合EventDispatcher对象
  public class KingdaClass{
  private var _dispatcher:EventDispatcher;
  public static const ACTION:String = “yeahyeah”;
  public function KingdaClass(){
      initSender();
  }
  private function initSender():void{
      _dispatcher = new EventDispatcher();
  }
  //调用专门的方法(method)来返回发送事件的EventDispatcher
  public function getSender():EventDispatcher{
      return _dispatcher;
  }
  public function doSomething():void{
      trace(“doSomething”);
  //发送事件
  var evtObj:Event = new Event(KingdaClass.ACTION);
      _dispatcher.dispatcherEvent(evtObj);
    }
  }
  • 实现IEventDispatcher接口(实现5个接口)
    1. addEventListener()
    2. dispatchEvent()
    3. hasEventListener()
    4. removeEventListener()
    5. willTrigger()

3.AS3网络通信基础

1.流程(过程相互独立)

  1. 构建通信请求对象

    • 请求对象包含足够的信息
    • 请求的URL地址:对应于URLRequest对象的url属性
    • 请求的方式:对应与method属性,默认是GET方式
  2. 构建URLRequest对象:

  var variables:URLVariables = new URLVariables(“name=foo&age=28”)
  var request:URLRequest = new URLRequest ();
  request.url = “http://www.........”;
  request.method = URLRequestMethod.GET;
  request.data = variables;
  1. 提交XML,构建请求对象:
  var loginXML:XML =
  <login>
  <username>......</username>
  <password>......</password>
  </login>;
  var request:URLRequest = new URLRequest ();
  request.url = “http://www.........”;
  request.contentType = “text/xml”;
  request.method = URLRequestMethod.POST;
  request.data = loginXML.toXMLString();

2.发出数据请求

var loader:URLLoader = new URLLoader(request);
//或者
var loader:URLLoader = new URLLoader();
loader.load(request);
//有数据返回,就会到URLLoader 对象中的data属性
  • URLLoader对象的6中事件,可以监听
    1. load()调用,发出Event.OPEN事件
    2. 加载过程中,发出ProgressEvent.PROGRESS事件(下载字节数信息)
    3. 加载完成,发出Event.COMPLETE
    4. 加载完成或失败,发出HTTP状态事件HTTPStatusEvent.HTTP_STATUS
    5. 加载失败,发出IOErrorEvent.IO_ERROR事件
    6. 发现加载内容不符规则,发出SecurityErrorEvent.SECURITY_ERROR

2.读取数据

  1. 读取文本格式数据(dataFormat=URLLoaderDataFormat.TEXT
  2. 读取值对格式数据(dataFormat=URLLoaderDataFormat.VARIABLES
  3. 读取二进制格式数据(Loader对象读取二进制方法loadBytes()

3.navigateToURL()

  • 在Flash中打开网站
  • API格式

    public function navigateToURL(request:URLRequest,window:String = null):void

    request:包含要跳转的完整

    window:显示网站的浏览器窗口或者HTML框架

  impot flash.net.*;
  var myurl:URLRequest = new URLRequest(“http://www........”);
  navigateToURL(myurl,”_blank”)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值