[英]Custom Event from Item Renderer not detected by a class
我試圖從項呈示器(它是主應用程序文件/ root的子項)調度自定義事件。
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中成功監聽事件,但我還需要在SkinnableContainer中檢測它 - “DetailedViewInfo”,它也是Main.mxml的子代:
它有可能嗎? 我嘗試導入所有相關的事件/類和相同的聲明。 即使我在Main.mxml中注釋掉事件監聽器,它也不起作用。 我嘗試在DetailedViewInfo中向項呈示器添加一個聲明,但是崩潰了應用程序,沒有任何可理解的錯誤。
有人可以向我解釋應該怎么做? 我在我的應用程序中使用自定義事件並且之前沒有發生過這種情況。 任何幫助高度贊賞!
在調度事件之后 ,您似乎正在添加事件偵聽器。 我看到你有一個includeIn
語句:這意味着不會立即創建DetailedViewInfo
組件,但只有在輸入MoviePage
狀態時才會創建。 可以在創建組件並附加事件偵聽器之前調度該事件。
此問題的快速解決方法是不使用includeIn
,而是根據當前狀態設置組件的可見性:
<views:DetailedViewInfo id="detailed" visible="false" includeInLayout="false"
visible.MoviePage="true" includeInLayout.MoviePage="true" />
但是,如果您需要使用此功能,可能需要查看您的體系結構。 不幸的是,我不能告訴你更多,因為我不知道你目前的架構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.