我一直在分派一个事件,但我无法在主应用程序中检测到它。我敲了一个代码示例,删除了多余的东西,所以它看起来有点不寻常!
我有一个主应用程序(Air),它有一个带有单个按钮的画布。这个单一的按钮打开一个弹出标题窗口,其中有一个数据网格。单击数据网格时,将调度一个非常简单的自定义事件,该事件在最低级别听到,但不调用画布或主应用程序。我假设它是我如何在上层定义听众的,但这真的让我发疯!下面的代码:
主应用程序.mxml.......
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="{onCreationComplete()}"
xmlns:components="components.*"
>
<mx:Script>
<![CDATA[
import components.lowestLevel;
private var lowest:lowestLevel;
private function onCreationComplete():void
{
lowest = new lowestLevel;
lowest.addEventListener('myEventType',mainAppListenerHandler);
}
private function mainAppListenerHandler(event:Event):void
{
trace("ive been heard in main app")
}
]]>
</mx:Script>
<components:middleLevel/>
</mx:WindowedApplication>
中间层.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
width="900"
height="50"
creationComplete="{ addEventListener('myEventType',listenerHandler);}"
>
<mx:Script>
<![CDATA[
import mx.core.Application;
import mx.managers.PopUpManager;
import actionScript.sql;
private function launchViewAllLoads(event:MouseEvent):void
{
sql.getSourceFilesToView()
var win:lowestLevel = new lowestLevel();
PopUpManager.addPopUp(win,parent,true);
PopUpManager.centerPopUp(win);
}
private function listenerHandler(event:Event):void
{
trace("im heard at the Middle level" )
}
]]>
</mx:Script>
<mx:Button id="btnViewAllLoads"
label="View Current"
click="{launchViewAllLoads(event)};"
/>
</mx:Canvas>
最低级别.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical" width="800" height="550"
title="View All Loads" horizontalAlign="center"
creationComplete="{ addEventListener('myEventType',listenerHandler);}"
>
<mx:Script>
<![CDATA[
import mx.core.IFlexDisplayObject;
import mx.events.CloseEvent;
import mx.managers.PopUpManager;
private function listenerHandler(event:Event):void
{
trace("im heard at the lowest level" )
}
private function sourceFilesToViewClickedHandler():void
{
PopUpManager.removePopUp(this as IFlexDisplayObject);
var myEvent:Event = new Event('myEventType' ,true,true);
dispatchEvent(myEvent);
}
]]>
</mx:Script>
<mx:Canvas id="cSourceFiles" width = "100%" height="100%">
<mx:DataGrid id="dgSourceFiles"
click="{sourceFilesToViewClickedHandler()}">
<mx:columns>
<mx:DataGridColumn dataField="Batch" headerText="Batch" width="80"/>
<mx:DataGridColumn dataField="LastUpdated" headerText="Last Updated" width="85"/>
</mx:columns>
</mx:DataGrid>
</mx:Canvas>
</mx:TitleWindow>