`

使用flex制作倒计时

    博客分类:
  • flex
阅读更多

因为09年1月17号我要考雅思,每天都惦记着还有多少天到。于是想做个flex的倒计时来提示自己时间在流逝。

制作第一步是算法。

使用timer控件来做定时器,每秒计算一次。具体算法为

   var minusSecond:int=downDate.getSeconds() - currentDate.getSeconds();
   var minusMinute:int;
   var minusHour:int;
   var minusDate:int;
   var minusMonth:int;
   var minusYear:int;
   
   var sFlag:Boolean;
   var mFlag:Boolean;
   var hFlag:Boolean;
   var monFlag:Boolean;
   
   if(minusSecond<0){
    minusSecond=60+minusSecond;
    sFlag=true;   
   }
   
   minusMinute=downDate.getMinutes() - currentDate.getMinutes();
   if(sFlag)
    minusMinute--;
   
   if(minusMinute<0){
    minusMinute=60+minusMinute;
    mFlag=true;
   }   
   
   minusHour=downDate.getHours() - currentDate.getHours();
   if(mFlag)
    minusHour--;
    
   if(minusHour<0){
    minusHour=24+minusHour;
    hFlag=true;
   }
   
   minusDate =downDate.getDate() - currentDate.getDate();
   minusMonth=downDate.getMonth() - currentDate.getMonth();
   
   if(hFlag){
    minusDate--;
   }
   
   if(minusDate>=0){
    minusMonth;
   }else{
    switch(currentDate.getMonth()+1){
     case 1,3,5,7,8,10,12:{
      minusDate = downDate.getDate() +(31- currentDate.getDate());
     }
     case 4,6,9,11:{
      minusDate = downDate.getDate() +(30- currentDate.getDate());
     }
     case 2:{
      if((currentDate.getFullYear()%4==0&&currentDate.getFullYear()%100!=0)||(currentDate.getFullYear()%400==0)){//闰年
       minusDate = downDate.getDate()+(29 - currentDate.getDate());
      }else{
       minusDate = downDate.getDate() +(28- currentDate.getDate());
      }
     }
    }
    minusMonth--;
   }    
   
   if(minusMonth<0){
    minusMonth=12+minusMonth;
    monFlag=true;
   }
   
   minusYear=downDate.getFullYear() - currentDate.getFullYear();
   if(monFlag){
    minusYear--;
   }

这个算法的优点是1、年月日各自为政。 2、从秒算起,为负数就向上减一,理解起来和书写起来都很方便滴哦。

 

第二步是将算法封装到控件,这里我使用的是<mx:Label>

需要强调的是,label换行是个弊端。但它的htmlText属性可以优化界面。

 

第三步是在应用界面调用封装好的label控件。为了将来计算其他倒计时,我提供了日期选择界面。

 

以下是我的完整源代码 欢迎切磋 erichan1979@gmail.com

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics