资源中心有实例
<?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: "疏散乘客", meettime: "00:01:00"},
{meetid: "YD7", meetname: "限制乘客进站", meettime: "00:01:45"},
{meetid: "YD8", meetname: "赶赴现场", meettime: "00:01:20"},
{meetid: "YD9", meetname: "封闭换乘通道", meettime: "00:00:20"},
{meetid: "YD10", meetname: "值班主任", meettime: "00:00:20"},
{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>