Flex 派发事件问题 55
自定义事件类问题在下边CustomEvent:package{importflash.events.Event;importflash.events.EventDispa...
自定义事件类问题在下边
CustomEvent:
package
{
import flash.events.Event;
import flash.events.EventDispatcher;
public class CustomEvent extends Event
{
public static const EVENT_NAME:String=”event_name”;
public static const dispatcher:EventDispatcher=new EventDispatcher();
public var data:Object;
public function CustomEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, data:Object=null)
{
super(type, bubbles, cancelable);
this.data=data;
}
override public function clone():Event{
return new CustomEvent(type, bubbles, cancelable, data);
}
}
}
抛出事件时:
var custom:CustomEvent=new CustomEvent(CustomEvent.CLICK);
//custom.data is Object;//发送事件同时,可以传值(可传可不传)
CustomEvent.dispatcher.dispatchEvent(custom);
侦听事件时:
CustomEvent.dispatcher.addEventListener(CustomEvent.CLICK,clickHandler);
问题是当我监听一个图片,监听他的mouse_over 和 double_Click ,
滑过派发123 双击派发456,现在滑过可以监听到,但是双击事件不能触发了,
img.addEventListener(MouseEvent.mouse_over,overHandler)
img.addEventListener(MouseEvent.double_click,dbClickrHandler)
function overHandler(e:MouseEvent):void{
CustomEvent.dispatcher.dispatchEvent("123");
}
function dbClickrHandler(e:MouseEvent):void{
CustomEvent.dispatcher.dispatchEvent("456");
} 展开
CustomEvent:
package
{
import flash.events.Event;
import flash.events.EventDispatcher;
public class CustomEvent extends Event
{
public static const EVENT_NAME:String=”event_name”;
public static const dispatcher:EventDispatcher=new EventDispatcher();
public var data:Object;
public function CustomEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, data:Object=null)
{
super(type, bubbles, cancelable);
this.data=data;
}
override public function clone():Event{
return new CustomEvent(type, bubbles, cancelable, data);
}
}
}
抛出事件时:
var custom:CustomEvent=new CustomEvent(CustomEvent.CLICK);
//custom.data is Object;//发送事件同时,可以传值(可传可不传)
CustomEvent.dispatcher.dispatchEvent(custom);
侦听事件时:
CustomEvent.dispatcher.addEventListener(CustomEvent.CLICK,clickHandler);
问题是当我监听一个图片,监听他的mouse_over 和 double_Click ,
滑过派发123 双击派发456,现在滑过可以监听到,但是双击事件不能触发了,
img.addEventListener(MouseEvent.mouse_over,overHandler)
img.addEventListener(MouseEvent.double_click,dbClickrHandler)
function overHandler(e:MouseEvent):void{
CustomEvent.dispatcher.dispatchEvent("123");
}
function dbClickrHandler(e:MouseEvent):void{
CustomEvent.dispatcher.dispatchEvent("456");
} 展开
1个回答
展开全部
原例子有说明,抛出事件是 CustomEvent.dispatcher.dispatchEvent(custom);
其中 custom 是 CustomEvent 类型。
你自己写的是传入 “123” 和 “456”,按照它的格式,应该这样写
function overHandler(e:MouseEvent):void{
var overEvent:CustomEvent = new CustomEvent("123");
CustomEvent.dispatcher.dispatchEvent(overEvent);
}
function dbClickrHandler(e:MouseEvent):void{
var dbEvent:CustomEvent = new CustomEvent("456"); CustomEvent.dispatcher.dispatchEvent(dbEvent);
}
其中 custom 是 CustomEvent 类型。
你自己写的是传入 “123” 和 “456”,按照它的格式,应该这样写
function overHandler(e:MouseEvent):void{
var overEvent:CustomEvent = new CustomEvent("123");
CustomEvent.dispatcher.dispatchEvent(overEvent);
}
function dbClickrHandler(e:MouseEvent):void{
var dbEvent:CustomEvent = new CustomEvent("456"); CustomEvent.dispatcher.dispatchEvent(dbEvent);
}
更多追问追答
追问
没区别吧,测试了一样不行。
我发现只要是在鼠标事件之后再派发只能派发一次。之后就不能再监听到鼠标事件了。
追答
当然有区别,dispatchEvent 跟的参数必须是一个 Event 类型数据。
你的问题单看这里也不能知道,首先你想要什么效果,然后你侦听是在哪里。有个整体的代码才能分析。
针对上面你发出来的代码来看,我那样写是没问题的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
您可能需要的服务
百度律临官方认证律师咨询
平均3分钟响应
|
问题解决率99%
|
24小时在线
立即免费咨询律师
18011人正在获得一对一解答
南京彩虹之旅3分钟前提交了问题
郑州都市传说6分钟前提交了问题
天津金色童年5分钟前提交了问题