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 に設定されている場合にのみ必要だと思いますが、今はそうではありません。