1

我有一个 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 时才需要它,它是,但现在不是。

4

0 回答 0