Flex Mobile应用程序中是否有办法监听<s:View>
的{{1}}范围内的事件?我们假设我有以下应用程序结构:
主要应用:
<s:ViewNavigator>
view.TasksView:
<s:TabbedViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
creationComplete="databaseConnection(event)">
<s:ViewNavigator id="tasks" width="100%" height="100%"
label="Tasks" firstView="views.TasksView"
title="Tasks" icon="@Embed('assets/icons/tasks.png')">
</s:ViewNavigator>
</s:TabbedViewNavigatorApplication>
view.AddTask:
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<s:Button label="New View" click="{navigator.pushView(views.AddTask)}"/>
</s:View>
说我想在我的主应用程序中监听<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
creationComplete="{dispatchEvent(new Event("happened"))}">
<fx:Metadata>
[Event(name="happened", type="flash.events.Event")]
</fx:Metadata>
</s:View>
事件。我怎么能听到这样的事件?
感谢您的时间。
答案 0 :(得分:1)
是的,你可以,可以这样做:
首先在您的应用程序中将此属性添加到根标记:
initialize="attachNavigationListeners(event)"
下一个方法将向导航器添加一个完整的事件,该事件需要自定义事件:
private function attachNavigationListeners(event : FlexEvent) : void {
navigator.addEventListener(Event.COMPLETE,attachViewListeners);
}
然后我们需要在导航器完成后添加视图侦听器,我将它分开,以便您可以根据需要在此处拥有尽可能多的视图,可以使用switch语句:
private function attachViewListeners(event : Event) : void {
if(navigator.activeView is FirstView) {
addListenersToFirstView();
}
}
将侦听器添加到相关视图中:
private function addListenersToFirstView() : void{
if(navigator.activeView is Firstview) {
var view: Firstview = navigator.activeView);
view.addEventListener("happened", handleHappened);
}
}
最后处理事件:
private function handleHappened(event:Event) : void{
// I hope something really did happen :)
}
注意强>
显然我刚刚概述了这里所需的所有步骤,我没有提供完整的工作示例来复制和粘贴,但是你知道你正在做什么来提出这个问题,我希望这可以帮助你,也是你已经展示了如何从您的视图中调度事件。
我也使用了字符串“happen”,但你会有一个像CustomEvent.HAPPENED这样的const或者适合你的东西,以避免以这种方式使用字符串。