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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |