自定义事件的问题

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

OrderEvent.as

复制内容到剪贴板

代码:


package {
import 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事件,这里再用就出错.
  }
}

时间: 2024-08-02 00:51:24

自定义事件的问题的相关文章

JQuery的自定义事件代码,触发,绑定简单实例

下面的代码是所有它自己的自定义事件触发.你可以绑定到这个自定义事件,并提高它时,你要执行的代码里面绑定.   自定义事件触发 复制代码 代码如下: $ event.trigger("myEventName"); 自定义事件绑定 下面的代码创建了一个绑定到自定义事件和自定义事件触发时将被执行. 复制代码 代码如下: $(this).bind("myEventName",function(){ alert("myEventName triggered"

jQuery自定义事件

在JS中,消息的通知是通过事件表达的,当代码库增长到一定的规模就需要考虑将行为和自定义事件进行解耦,通过事件机制可以将类设计为独立的模块,通过事件对外通信提高了程序的开发效率. 了解自定义事件的概念: 类似 DOM 的行为:你在 DOM 节点(包括 document 对象)监听并触发自定义事件.这些事件既可以冒泡,也可以被拦截.这正是 Prototype.jQuery 和 MooTools 所做的.如果事件不能扩散,就必须在触发事件的对象上进行监听. 命名空间:一些框架需要你为事件指定命名空间,

JavaScript使用自定义事件实现简单的模块化开发

WEB前端最常见驱动方式就是事件了, 所有交互等等都是通过事件,前端的常见事件有:     UI事件: 焦点事件: 鼠标事件: 滚轮事件: 文本事件: 键盘事件: 变动事件: 现在网页上有一个输入框, 如果我们要对用户输入的字符串进行过滤, 或者是截获用户的输入进行处理的话, 我们要肿么办  同学们纷纷举手说:"老师,我知道,是使用添加事件", 老师也很欣慰地点了点头, 这群家伙真的是越来越聪明了, 老师又问了"如果要取消用户的输入怎么办了", 坐在最前排眼睛最小的

js也可以有自定义事件 注入就是这么爽

js 在c#中有delegate,还有特殊的可以直接应用于事件编程的delegate,那就是event.而在js中没有c#的event,更没有delegate,有的只是dom元素内置的的native的不可扩展的event,比如无法为input元素添加事件,只能在其拥有的事件(如onclick=handler)上扩展应用.那么能不能做到自定义的事件模拟效果呢?答案是肯定的,也就是本文的主题. 首先弄明白一下事件的意图--可以在发生一件事的时候执行额外的代码,如document.attachEven

用EventDispatcher自定义事件

原来也研究过EventDispatcher,但是最近用的比较多,没想到这么好用,不用定义那么多全局变量. 我不做过多的说明,想要深入了解的同学请看帮助,我只告诉大家怎么定义自己的事件,而且大家马上就能用这些代码定义自己的事件. 下面看代码: //首先我们要导入EventDispatcherimport mx.events.EventDispatcher;class testEvent extends MovieClip{ function testEvent(){//在构造函数中初始化 Even

关于自定义事件的一点体会

今天在msdn上搜索文章的时候无意中看到一个涉及 自定义事件 的部分,整天用到的基本都是windows开发环境下Ide的自带事件,比如click什么的,一时竟没看懂,回头翻书查了查,才稍微理解了,并加深了印象.虽然以前在java里也用过事件,但在c#里事件必须先定义委托,一时比较乱,整理一下先. 首先定义一个事件的函数签名(参数的格式)--代理public delegate void ComputeSalaryCallback(string EmpID,double Salary); 在类型中声

浅析C#的事件处理和自定义事件

一.了解C#中的预定义事件处理机制 在写代码前我们先来熟悉.net框架中和事件有关的类和委托,了解C#中预定义事件的处理. EventArgs是包含事件数据的类的基类,用于传递事件的细节. EventHandler是一个委托声明如下 public delegate void EventHandler( object sender , EventArgs e ) 注意这里的参数,前者是一个对象(其实这里传递的是对象的引用,如果是button1的click事件则sender就是button1),后面

利用自定义事件实现不同窗体间的通讯 -- C#篇

C# 中的"事件"是当对象满足一定条件,发生某些事情时,类向该类的客户提供通知的一种方法.使用事件,拥有该事件的对象不必知道需要通知谁,一旦满足了某个条件,将自动调用该事件,正确通知每个需要通知的对象.通过使用事件,提高了程序的模块化程度. 要在程序中使用自定义事件,需按以下步骤进行: 1.声明事件要在类内声明事件,首先必须声明该事件的委托类型:public delegate void SelectionChangedEventHandler(object sender, Select

[叩响C#之门]写给初学者:自定义事件

16.4.2自定义事件 通过上一节的论述,我们知道要创建一个事件驱动的程序需要下面的步 骤: 1.声明关于事件的委托; 2.声明事件; 3.编写触发事件的函数; 4.创建事 件处理程序; 5.注册事件处理程序; 6.在适当的条件下触发事件. 现在我们来编写一 个自定义事件的程序.主人养了一条忠实的看门狗,晚上主人睡觉的时候,狗负责看守房子.一旦有小偷进来 ,狗就发出一个Alarm事件,主人接到Alarm事件后就会采取相应的行动.假设小偷于2009年元旦午夜时分到 达. 作者:梁斌玉 摘自<C#初

Qt学习之路(23):自定义事件

Qt允许你创建自己的事件类型,这在多线程的程序中尤其有用,当然,也可以用在单线程的程序中,作为一种对象间通讯的机制.那么,为什么我需要使用事件,而不是使用信号槽呢?主要原因是,事件的分发既可以是同步的,又可以是异步的,而函数的调用或者说是槽的回调总是同步的.事件的另外一个好处是,它可以使用过滤器. Qt中的自定义事件很简单,同其他类似的库的使用很相似,都是要继承一个类进行扩展.在Qt中,你需要继承的类是QEvent.注意,在Qt3中,你需要继承的类是QCustomEvent,不过这个类在Qt4中