アイテム レンダラー (メイン アプリケーション ファイル/ルートの子) からカスタム イベントをディスパッチしようとしています。
Main.mxml のコード:
<s:List id="movieGrid"itemRenderer="views.MovieRenderer" dataProvider="{new ArrayCollection()}">
</s:List>
<s:Group width="100%" height="100%" bottom="60">
<views:DetailedViewInfo id="detailed" includeIn="MoviePage" />
</s:Group>
レンダラー (クリックされたもの):
MyEventDispatcher.Dispatcher.dispatchEvent(new MovieClickEvent(MovieClickEvent.CLICKED, data));
DetailedViewInfo (作成完了):
MyEventDispatcher.Dispatcher.addEventListener(MovieClickEvent.CLICKED, clickHandler);
MyEventDispatcher:
package events
{
import flash.events.EventDispatcher;
public class MyEventDispatcher
{
public static var Dispatcher:EventDispatcher = new EventDispatcher();
}
}
イベント:
package events
{
import flash.events.Event;
public class MovieClickEvent extends Event
{
public function MovieClickEvent(type:String, theMovieData:Object, bubbles:Boolean=true, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
this._result = theMovieData;
}
public function get result():Object
{
return this._result;
}
override public function clone():Event
{
return new MovieClickEvent(type, result, bubbles, cancelable)
}
public static const CLICKED:String = "MovieClickEvent.CLICKED";
private var _result:Object;
}
}
Main.mxml でイベントを正常にリッスンできますが、Main.mxml の子でもある SkinnableContainer - "DetailedViewInfo" でもイベントを検出する必要があります。
それは彼の可能性ですか?関連するすべてのイベント/クラスをインポートしてみましたが、宣言についても同じです。Main.mxml のイベントリスナーをコメントアウトしても動きません。DetailedViewInfo の項目レンダラーに宣言を追加しようとしましたが、理解できるエラーなしでアプリケーションがクラッシュします。
誰かがこれをどのように行うべきかを説明してもらえますか? アプリケーションのいたるところでカスタム イベントを使用していますが、これまでにこのようなことはありませんでした。どんな助けでも大歓迎です!