利用activate和deactivate事件来控制Flex应用是否得到焦点(Focus)

By Minidxer | March 4, 2008

下面的例子展示了通过监听<mx:Application />中的activate和deactivate事件,如何去控制/限定Flex应用程序是否得到焦点。


下面是具体的例子的代码:

Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- http://blog.flexexamples.com/2008/02/29/determining-if-a-flex-application-has-focus-using-the-activate-and-deactivate-events/ -->
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  4.         layout="vertical"
  5.         verticalAlign="middle"
  6.         backgroundColor="white"
  7.         activate="application_activate(event);"
  8.         deactivate="application_activate(event);">
  9.  
  10.     <mx:Script>
  11.         <![CDATA[
  12.             import mx.controls.dataGridClasses.DataGridColumn;
  13.  
  14.             private function application_activate(evt:Event):void {
  15.                 arrColl.addItemAt({type:evt.type, time:getTimer()}, 0);
  16.             }
  17.  
  18.             private function time_labelFunc(item:Object, col:DataGridColumn):String {
  19.                 return numberFormatter.format(item[col.dataField]);
  20.             }
  21.         ]]>
  22.     </mx:Script>
  23.  
  24.     <mx:ArrayCollection id="arrColl" />
  25.  
  26.     <mx:NumberFormatter id="numberFormatter"
  27.             useThousandsSeparator="true" />
  28.  
  29.     <mx:DataGrid id="dataGrid"
  30.             dataProvider="{arrColl}"
  31.             width="320"
  32.             rowCount="8"
  33.             verticalScrollPolicy="on">
  34.         <mx:columns>
  35.             <mx:DataGridColumn dataField="type" />
  36.             <mx:DataGridColumn dataField="time"
  37.                     headerText="time (ms)"
  38.                     labelFunction="time_labelFunc" />
  39.         </mx:columns>
  40.     </mx:DataGrid>
  41.  
  42. </mx:Application>

下面是运行效果:

原文作者:Peter deHaan 翻译:minidxer

Topics: Flex | Tags: , , ,

Search Posts

Archives

Sponsored Ads