韩国电影女演员:学习as3的笔记15一个事件处理代码

来源:百度文库 编辑:九乡新闻网 时间:2024/03/29 06:53:16
学习as3的笔记15一个事件处理代码2010-12-12 09:30

第一个事件处理代码,这是殿堂之路里的例子

情况是陆云龙(客人类keren)去饭店点菜(事件类shijian),然后服务生(服务生类fuwu)做出回应,通过文档类Main来实现

在文档类Main中,生成一个客人对象lu,一个服务员对象fandian。服务员对象先在客人那里注册了对“点菜”事件的侦听,分配给了自身的diancai()方法。然后客人调用了order()方法来点菜,在order()方法中,发送了shijian事件对象。这样,事件就被服务员侦听到,实行了diancai,最后客人移除了服务员侦听。

第一个as文件   事件类shijian

package 

{

import flash.events.Event;       导入事件类Event

public class shijian extends Event   继承

{

public static const ORDER:String = "点菜";  静态属性

private var _dishes:Array;  用数组类型来储存点的菜名,下面用到

public function shijian()   构造器函数

{

super(ORDER);    将静态属性作为事件的默认类型  因为const,所以说这个值不会改变。

}    用get  set 方法来访问上面的_dishes客人点菜的清单

public function get dishes():Array

{

return _dishes;  要返回与上面原来的一样,上面有说过

}

public function set dishes(dishesAry:Array):void

{

_dishes = dishesAry;  这里也一样要=上面的

}  如果不想用get  set方法,就必须_dishes的访问权限改成public

}     其他涉及到dishes这个名称的都要改为_dishes。这有点不好,想一下

}         有谁去点菜会大声说让所有人都知道呢?所以尽量用访问权限紧点。

第二个as文件   客人类keren

package 

{

import flash.events.EventDispatcher;    导入抽象类

public class keren extends EventDispatcher  继承

{

public var name:String;  声明字符串属性 服务生类会用到

public function keren(ns:String)    构造器函数

{

name = ns;

}

public function order():void   

{

var orderDish:shijian=new shijian(); 生成shijian对象

orderDish.dishes = ["鸡肉","鸭肉","鱼肉"];      点一些菜,放入上面shijian对象里的_dishes数组类型的属性里面

dispatchEvent(orderDish);   发送出这个事件,服务生类接收

}

}

}

第三个as文件   服务生类fuwu

package 

{

public class fuwu

{    下面的diancai这个方法就是用来接收上面发送出的shijian对象

public function diancai(evt:shijian):void

{

trace("你好,"+evt.target.name+"!你点的菜是:\r"+evt.dishes);

trace("我马上吩咐XX去做。");   target事件的目标,就是事件的

} 发送者,这个发送者是谁?是keren,客人里面的谁?在keren文件里有

}name这个属性,这个属性是个字符窜,这个字符串指向文档类里面的lu属性

}    lu属性等于kenren,客人赋予它“陆云龙”这个字符串。所以通过逻辑,lu就是陆云龙,name就是lu——陆云龙,target事件的目标就是陆云龙,evt.target.name这一句输出的就是陆云龙。   evt.dishes这个道理是一样的,传到了shijian里的dishes,而这个dishes又被keren里的orderDish所引用,所以输出"鸡肉","鸭肉","鱼肉"。

最后,       文档类Main

package 

{

import flash.display.Sprite;

public class Main extends Sprite

{

public function Main()

{

var lu:keren = new keren("陆云龙"); 客人陆云龙,上面有说

var fantian:fuwu=new fuwu();  生成一个服务员fandian

lu.addEventListener(shijian.ORDER,fantian.diancai);注册侦听器

Lu这个人进行点菜,就是说侦听了shijian里的点菜ORDER,和服务员类里的diancai方法

lu.order();客人lu执行keren里面的order方法,就是说lu点菜了(上面的侦听就是),要在order方法中发送orderDish

lu.removeEventListener(shijian.ORDER,fantian.diancai);

}    移除侦听器

}

}

完了以后,fla文件输出

你好,陆云龙!你点的菜是:

鸡肉,鸭肉,鱼肉

我马上吩咐XX去做。