加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Actionscript 倒计时组件

发布时间:2020-12-15 05:17:57 所属栏目:百科 来源:网络整理
导读:/** * ComingX.com * Copyright 2012. All rights reserved. * * @Author: Jingle * @Email: jingdongemail#gmail.com * @Created date: 2012-2-6 */package com.jingle.view.component{import flash.display.Sprite;import flash.events.Event;import flash
/**
 * ComingX.com
 * Copyright 2012. All rights reserved.
 *
 * @Author: Jingle
 * @Email: jingdongemail#gmail.com
 * @Created date: 2012-2-6
 */
package com.jingle.view.component
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.text.TextLineMetrics;
	import flash.utils.Timer;
	import mx.controls.Label;
	import mx.core.UIComponent;
 
	[Event(name="timeUp",type="flash.events.Event")]
	public class TimeCounter extends UIComponent
	{
		private var timer:Timer;
		private var timeLabel:Label;
		/**
		 * 剩余时间,毫秒单位 
		 */		
		private var leftTime:Number;
 
		/**
		 * 时间到之后显示替代文本 
		 */		
		private static const TIME_UP:String = "时间到";
 
		/**
		 * 结束时间,毫秒单位
		 */
		private var _endTime:Number;
 
		/**
		 * 字体大小 
		 */		
		public var fontSize:Number = 20;
		/**
		 * 字体颜色 
		 */		
		public var fontColor:uint = 0x000000;
 
		public function TimeCounter()
		{
			super();
			timer = new Timer(1000);
			timer.addEventListener(TimerEvent.TIMER,onTimer);
 
		}
 
		public function get endTime():Number{
			return this._endTime;
		}
 
		public function set endTime(value:Number):void
		{
			if(value != this._endTime && value)
			{
				_endTime = value;
				var timeNow:Number = (new Date()).getTime();
				leftTime = _endTime - timeNow;
				timer.stop();
				timer.reset();
				timer.start();
			}
		}
 
		override protected function createChildren():void
		{
			if(!timeLabel)
			{
				timeLabel = new Label();
				addChild(timeLabel);
				this.setStyle("fontSize",fontSize);
				this.setStyle("color",fontColor);
				var lineMatrics:TextLineMetrics = measureText("00 : 00 : 00");
				timeLabel.width = lineMatrics.width + 10;
				timeLabel.height = lineMatrics.height + 4;
				timeLabel.setStyle("textAlign","center");
				timeLabel.setStyle("verticalAlign","middle");
			}
 
			timer.start();
		}
 
		protected function onTimer(evt:TimerEvent):void
		{
			leftTime = leftTime - 1000;
			if(leftTime <= 0)
			{
				//到时间了
				timer.stop();
				dispatchEvent(new Event("timeUp"));
			}
			updateTimeLabel();
		}
 
		protected function updateTimeLabel():void
		{
			if(leftTime <= 0)
			{
				timeLabel.text = TimeCounter.TIME_UP;
				return;
			}
			var h:Number = Math.floor(leftTime / (1000 * 60 * 60) );
			var m:Number = Math.floor(leftTime % (1000 * 60 * 60) / (1000 * 60));
			var s:Number = Math.floor(leftTime % (1000 * 60) / 1000);
 
 
			timeLabel.text = oneToTow(h) + " : " + oneToTow(m) + " : " + oneToTow(s);
		}
 
		private function oneToTow(value:Number):String
		{
			var str:String;
			if(value < 10)
			{
				str = "0" + value;
			}
			else
			{
				str = "" + value;
			}
			return str;
 
		}
	}
}

使用方法

<component:TimeCounter endTime="{model.deadline}" fontSize="30" timeUp="timeUpHandler(event)" />

博文链接

更多AS Flex博文

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读