一聚教程网:一个值得你收藏的教程网站

热门教程

自定义事件的问题

时间:2022-07-02 17:10:15 编辑:袖梨 来源:一聚教程网

1.如何在一个类定义多个自定义事件名称?
2.为什么不能对一个实例连续两次及以上的发送事件?

OrderEvent.as
复制内容到剪贴板
代码:

package {
import flash" ōnclick="tagshow(event)">flash.events.Event;
public class OrderEvent extends Event{
  public static const ORDER_DISHES:String="点菜";   //这里自定义了一个事件名称:ORDER_DISHES
  public static const UNORDER_DISHES:String="退菜";   //问题1:如何添加多个事件名称呢?
  private var _dishes:Array ;   //用来存储客人点的菜名清单
  public function OrderEvent (){
   super(ORDER_DISHES);    //将静态属性ORDER_DISHES作为事件的默认类型   
  }
  //OrderEvent事件自定义的方法
  public function set dishes(dishesAry:Array):void{
   _dishes = dishesAry;
  }
  public function get dishes():Array{
   return _dishes;
  }
}
}
客户.as
复制内容到剪贴板
代码:

package {
import flash.events.EventDispatcher;
public class 客户 extends EventDispatcher {
  public var name:String;
  private var _orderDish:OrderEvent;
  public function 客户(客户名:String) {
   name = 客户名;
   _orderDish = new OrderEvent();
  }
  public function 点菜(菜单:Array):void {
   _orderDish.dishes = 菜单;
   dispatchEvent(_orderDish);   //发送出OrderEvent事件
  }
  public function 退菜(退菜单:String):void {
   _orderDish.undishes = 退菜单;
   dispatchEvent(_orderDish);   //发送出OrderEvent事件
  }
  //问题2:在点菜()和退菜()里都有dispatchEvent(_orderDish); 只有注释掉一个后,另一个才起作用,为什么?
}
}
文档类:
复制内容到剪贴板
代码:
package {
import flash.display.Sprite;
public class 点菜测试 extends Sprite{
  public function 点菜测试(){
   
   var A客:客户 = new 客户("ybzjllj");//生成一个客人"ybzjllj"
   var 小姐A:服务员 = new 服务员("A小姐");//生成一个服务员
   
   //注册侦听器,将服务员的replyOrderFood()方法注册为监听“点菜”事件的侦听器
   A客.addEventListener(OrderEvent.ORDER_DISHES,小姐A.服务1);
   A客.addEventListener(OrderEvent.UNORDER_DISHES,小姐A.服务2);// 问题1:如何才能使这个事件UNORDER_DISHES有效?
  
   //点菜,在order()中发出OrderEvent事件。
   A客.点菜(["剁椒鱼头","农家小炒肉","神仙豆腐"]);
   //A客.点菜(["青椒鱼","回锅肉","豆花鱼"]);  //问题2:点菜两次,就会出错.

      
   //退菜
   //A客.退菜("农家小炒肉");         //问题2:点菜()里用dispatchEvent(_orderDish)发送了OrderEvent事件,这里再用就出错.
  }
}

热门栏目