我有一个Flex 4.6移动项目,我创建了一个自定义事件,我可以从各种跟踪中看到事件正在按预期发送,但无论我做什么我都无法让听众工作他们只是坐在那里没有任何事情发生,请看一看并告诉我可能出现的问题。
自定义事件:
package classes.events
{
import flash.events.Event;
public class cartLoaded extends Event
{
public static const CART_LOAD_SUCCESS:String = "cartLoadSuccess";
public function cartLoaded(type:String, bubbles:Boolean=true, cancelable:Boolean=false)
{
trace("event_dispatched");
super(type, bubbles, cancelable);
}
override public function clone():Event
{
trace("event_cloned");
return new cartLoaded(type, bubbles, cancelable);
}
}
}
在来自webservice调用的ResultEvent之后,从类中调度该事件,因此在ResultEvent回调中,我有:
var cl:cartLoaded = new cartLoaded(cartLoaded.CART_LOAD_SUCCESS);
e.currentTarget.dispatchEvent(cl);
当我的结果回来时,我在控制台中看到'event_dispatched'。所以我知道事件被解雇了。在调用我的类的ItemRenderer的父列表中:
lst_cart.addEventListener(cartLoaded.CART_LOAD_SUCCESS,loadData);
function loadData(e:cartLoaded):void
{
trace("set data provider");
}
我从未见过'set data provider',现在我明白听众必须在调度事件之前注册,而在我的情况下肯定是:
请帮助,因为这严重阻碍了我前进,我需要能够捕捉到这个事件,我已经尝试过所有事情。
如下所述,我确实忘记发布代码的一部分,在包含内容的Web服务调用的类中,在包内,但在类之外:
[Event(name="cartLoadSuccess", type="classes.events.cartLoaded")]
我相信你应该只在气泡被设置为假时才需要它,但现在却不是。