我有一个 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);
}
}
}
在来自 web 服务调用的 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");
}
我从来没有见过“设置数据提供者”,现在我明白必须在调度事件之前注册监听器,在我的情况下它肯定是:
请帮忙,因为这严重阻碍了我前进,我需要能够捕捉到这个事件,我已经尝试了一切。
如下所述,我确实忘记在进行 web 服务调用的类中发布代码的一部分,我在包内但在类外有这一行:
[Event(name="cartLoadSuccess", type="classes.events.cartLoaded")]
我相信只有在将气泡设置为 false 时才需要它,它是,但现在不是。