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

FLex 固定时间倒计时 并计时结束后暄软组件

发布时间:2020-12-15 03:57:51 所属栏目:百科 来源:网络整理
导读:资源中心有实例 ?xml version="1.0" encoding="utf-8"?s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete

资源中心有实例

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   minWidth="955"
			   minHeight="600"
			   creationComplete="application1_creationCompleteHandler(event)">
	<s:layout>
		<s:HorizontalLayout/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import flash.filters.BitmapFilterQuality;
			import flash.filters.BitmapFilterType;

			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.controls.LinkButton;
			import mx.events.FlexEvent;

			import spark.components.Label;
			import spark.effects.animation.RepeatBehavior;

			[Bindable]
			private var arr:ArrayCollection=new ArrayCollection([
				{meetid: "YD5",meetname: "封闭车站",meettime: "00:01:00"},{meetid: "YD6",meetname: "疏散乘客",{meetid: "YD7",meetname: "限制乘客进站",meettime: "00:01:45"},{meetid: "YD8",meetname: "赶赴现场",meettime: "00:01:20"},{meetid: "YD9",meetname: "封闭换乘通道",meettime: "00:00:20"},{meetid: "YD10",meetname: "值班主任",{meetid: "YD11",meetname: "报告总调",meettime: "00:01:35"},{meetid: "YD12",meetname: "发布应急短信",meettime: "00:00:05"},{meetid: "YD13",meetname: "解除应急短信",meettime: "00:00:05"}]);

			[Bindable]
			private var arrSec:ArrayCollection=new ArrayCollection(); //存储倒数秒数
			[Bindable]
			private var arrName:ArrayCollection=new ArrayCollection(); //存储linkbutton
			[Bindable]
			private var arrTime:ArrayCollection=new ArrayCollection(); //存储秒数的LinkButton
			[Bindable]
			private var maxSec:int; //最大的秒数

			[Bindable]
			private var timer:Timer=new Timer(1000,0);
			[Bindable]
			private var i:int=0;
			[Bindable]
			private var allSces:int=0; //计算小时+分钟+秒的和  共有多少秒  

			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				timer.addEventListener(TimerEvent.TIMER,timerHandler);
				for each (var item:Object in arr)
				{
					var linkbutt:LinkButton=new LinkButton();
					linkbutt.addEventListener(MouseEvent.CLICK,linkStop);
					linkbutt.label=item.meetname; //名字
					linkbutt.id=item.meetid; //编号
					vbox.addChild(linkbutt); //界面添加button
					arrName.addItem(linkbutt); //存储要点名称的集合


					var lab:LinkButton=new LinkButton();
					lab.enabled=false;
					lab.id=item.meetid; //编号
					lab.label=item.meettime; //时间
					vbox1.addChild(lab); //同要点名称一样,添加在处置要点名称的后面显示
					arrTime.addItem(lab); //存储要点时间的集合


					//处置要点的处置时间
					var str:String=item.meettime;
					var arr:Array=str.split(":"); //截取前的格式为00:00:00  小时:分钟:秒

					var hours:int=0; //小时
					var mins:int=0; //分钟
					var sec:int=0; //秒

					//将小时、分钟、秒转换成int类型
					if (arr[0] != "00")
					{
						hours=parseInt(arr[0]);
					}
					if (arr[1] != "00")
					{
						mins=parseInt(arr[1]);
					}
					if (arr[2] != "00")
					{
						sec=parseInt(arr[2]);
					}


					//计算小时+分钟+秒的和  共有多少秒
					allSces=hours * 3600 + mins * 60 + sec;
					//如果最后结果的和等于初始化的0,则0秒数
					if (maxSec < allSces)
					{
						maxSec=allSces;
					}

					var obj:Object=new Object();
					obj.id=item.meetid; //处置要点编号
					obj.times=allSces; //处置要点的处置总秒数
					arrSec.addItem(obj); //管理每个处置要点的总秒数集合
				}
				timer.start();
			}


			private function timerHandler(event:TimerEvent):void
			{
				i=i + 1; //倒计时的秒数

				//如果i(当前秒数,每秒钟+1)大于最大的秒数,timer停止
				if (i <= maxSec)
				{
					//所有处置要点的秒数,如果时间相等渲染此组件
					for each (var obj:Object in arrSec)
					{
						if (obj.times == i)
						{
							for each (var linkBut:LinkButton in arrName)
							{
								if (obj.id == linkBut.id)
								{
									glower.target=linkBut;
									glower.play();
									//如果多个组件的时间相等,则不需要使用此函数,直接glower.play();即可,否则,指挥渲染一个组件。
//									linkBut.callLater(function():void
//										{
//											Alert.show(linkBut.id.toString());
//											glower.play();
//
//										});
									break;
								}
							}
						}
					}

					showTimes(arrTime);
				}
				else
				{
					if (timer != null)
						timer.stop();
				}
			}

			/**
			 * 时间处置,倒数
			 * **/
			private function showTimes(arrC:ArrayCollection):void
			{
				vbox1.removeAllChildren(); //每一秒钟都清空原有数据,重新添加
				for each (var lab:LinkButton in arrC)
				{
					var text:String=lab.label;
					var arr:Array=text.split(":");

					var h:int=0; //小时
					var f:int=0; //分钟
					var s:int=0; //秒

					//将00:00:00格式中截取,判断时间是否为00,不为00获取相应的时分秒
					if (arr[0] != "00")
					{
						h=parseInt(arr[0]);
					}
					if (arr[1] != "00")
					{
						f=parseInt(arr[1]);
					}
					if (arr[2] != "00")
					{
						s=parseInt(arr[2]);
					}

					var allSec:int=h * 3600 + f * 60 + s; //得到一个总秒数
					if (allSec > 0) //如果总秒数小于0,linkbutton显示00:00:00
					{
						var lint:int=allSec - 1; //秒数每次循环-1

						//判断秒数的时间,拼接成00:00:00的时间格式,则形成处置要点倒计时
						if (lint < 60) //如果总秒数小于60
						{
							var str:String=lint + "";
							if (str.length < 2)
								str="0" + str;
							lab.label="00:00:" + str;
						}
						else if (lint >= 60 && lint < 3600) //在一分钟和一个小时之内
						{
							//设置分钟、秒数,小时默认为00
							var mins:String=(Math.floor(lint / 60)).toString();
							var sec:String=(lint - (Math.floor(lint / 60)) * 60).toString();
							if (mins.length < 2)
								mins="0" + mins;
							if (sec.length < 2)
								sec="0" + sec;
							lab.label="00:" + mins + ":" + sec;
						}
						else if (lint >= 3600) //大于一个小时
						{
							var hour:String=(Math.floor(lint / 3600)).toString(); //向下限值 小时
							var minss:String=(lint - (Math.floor(lint / 3600)) * 60).toString(); //得到分钟数,向下限值
							var secs:String=(lint - (lint - (Math.floor(lint / 3600)) * 60) * 60).toString();
							if (hour.length < 2)
								hour="0" + hour;
							lab.label=hour + ":" + minss + ":" + secs;
						}
					}
					else
					{
						lab.label="00:00:00";
					}
					vbox1.addChild(lab);
				}
			}

			private function linkStop(event:MouseEvent):void
			{
				var obj:LinkButton=event.currentTarget as LinkButton;
				for each (var linkBut:LinkButton in arrName)
				{
					if (obj.id == linkBut.id)
					{
						linkBut.filters=[];
					}
				}
			}
		]]>
	</fx:Script>
	<fx:Declarations>
		<s:GradientGlowFilter id="glow"
							  blurX="8"
							  blurY="8"
							  quality="{BitmapFilterQuality.HIGH}"
							  type="{BitmapFilterType.OUTER}"
							  knockout="false">
			<s:entries>
				<s:GradientEntry alpha="0"
								 color="0xFF0000"
								 ratio="0"/>
				<s:GradientEntry alpha="1"
								 color="0xFFFF00"
								 ratio="128"/>
				<s:GradientEntry alpha="1"
								 color="0xFFFFFF"
								 ratio="255"/>
			</s:entries>
		</s:GradientGlowFilter>
		<s:AnimateFilter id="glower"
						 bitmapFilter="{glow}"
						 duration="600"
						 repeatCount="0"
						 repeatBehavior="{RepeatBehavior.REVERSE}">
			<s:SimpleMotionPath property="strength"
								valueFrom="0"
								valueTo="2"/>
		</s:AnimateFilter>
	</fx:Declarations>

	<mx:VBox id="vbox"
			 width="180"
			 height="100%">

	</mx:VBox>
	<mx:VBox id="vbox1"
			 width="200"
			 height="100%">

	</mx:VBox>
</s:Application>



(编辑:李大同)

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

    推荐文章
      热点阅读