Flex中自定义timer和DataTimer的例子

By Minidxer | April 11, 2009

接下来的例子演示了Flex中如何自定义timer和DataTimer。

让我们先来看一下Demo可以右键View Source或点击这里察看源代码):


下面是完整代码(或点击这里察看):

Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.         layout="vertical"
  4.         verticalAlign="middle"
  5.         backgroundColor="white"
  6.         creationComplete="init();">
  7.  
  8.     <mx:Script>
  9.         <![CDATA[
  10.             import mx.utils.UIDUtil;
  11.  
  12.             private var timer:DataTimer;
  13.  
  14.             private function init():void {
  15.                 timer = new DataTimer(1000);
  16.                 timer.data.startTime = getTimer();
  17.                 timer.data.uid = UIDUtil.createUID();
  18.                 timer.addEventListener(TimerEvent.TIMER, timer_timer);
  19.                 timer.start();
  20.             }
  21.  
  22.             private function timer_timer(evt:TimerEvent):void {
  23.                 var tmr:DataTimer = evt.currentTarget as DataTimer;
  24.                 var obj:Object = new Object();
  25.                 obj.currentCount = tmr.currentCount;
  26.                 obj.delay = tmr.delay;
  27.                 obj.repeatCount = tmr.repeatCount;
  28.                 obj.running = tmr.running;
  29.                 obj.startTime = tmr.data.startTime;
  30.                 obj.uuid = tmr.data.uid;
  31.                 arrColl.addItemAt(obj, 0);
  32.             }
  33.         ]]>
  34.     </mx:Script>
  35.  
  36.     <mx:ArrayCollection id="arrColl" />
  37.  
  38.     <mx:DataGrid id="dataGrid"
  39.             dataProvider="{arrColl}"
  40.             width="100%"
  41.             rowCount="10"
  42.             verticalGridLines="false"
  43.             verticalScrollPolicy="on">
  44.         <mx:columns>
  45.             <mx:DataGridColumn dataField="currentCount" />
  46.             <mx:DataGridColumn dataField="repeatCount" />
  47.             <mx:DataGridColumn dataField="delay" />
  48.             <mx:DataGridColumn dataField="running" />
  49.             <mx:DataGridColumn dataField="startTime"
  50.                     headerText="startTime (*)" />
  51.             <mx:DataGridColumn dataField="uuid"
  52.                     headerText="uuid (*)" />
  53.         </mx:columns>
  54.     </mx:DataGrid> 
  55.  
  56. </mx:Application>

下面是DataTimer.as代码:

  1. package {
  2.     import flash.utils.Timer;
  3.  
  4.     public class DataTimer extends Timer {
  5.         private var _data:Object;
  6.  
  7.         public function DataTimer(delay:Number, repeatCount:int=0) {
  8.             super(delay, repeatCount);
  9.             _data = {};
  10.         }
  11.  
  12.         public function get data():Object {
  13.             return _data;
  14.         }
  15.  
  16.         public function set data(value:Object):void {
  17.             _data = value;
  18.         }
  19.     }
  20. }
代码:Peter deHaan 翻译/整理/编译:中文Flex例子

Topics: Other | No Comments » | Tags: ,

Search Posts