本文属spanzhang原创,其blog地址为:http://blog.youkuaiyun.com/spanzhang。引用请注明出处,谢谢!!
<!--
作者:张友邦
时间:2004-02-27
描述:时钟控件
属性:
unit :时间单位,它本身以毫秒为单位。时钟将以该单位迈进,每一次增加都会产生一个事件onunit。
interval :时钟目标所包含的单位(unit)数。
unitCount :当前经过的单位数。
enabled :时钟使能状态。
事件:
onunit :每一次时钟迈进产生的事件。
ontimer :时钟目标事件。
实例:
<span id="timer1"
style="behavior:url(spanTimer.htc); color:red; cursor:hand;"
onclick="this.enabled = !this.enabled;"
interval=10
onunit="onEveryUnit()"
ontimer="refreshData();"
title="停止/启动"></span>
-->
<!--
接口定义
-->
<public:component>
<public:property name="description" value="Span Timer Behavior" />
<public:property name="version" value="1.0.0.0" />
<public:property name="unit" put=putUnit get=getUnit />
<public:property name="interval" put=putInterval get=getInterval />
<public:property name="enabled" put=putEnabled get=getEnabled />
<public:property name="unitCount" get=getUnitCount />
<public:method name="reset" />
<public:event name="onunit" id="eventUnit" />
<public:event name="ontimer" id="eventTimer" />
</public:component>
<!--
组件实现
-->
<script language="javascript">
//
// 全局变量
//
var __handleInterval = null;
var __unitCount = 0
var __enabled = false
var __unit = 1000
var __interval = 10
//
// 单位毫秒数
//
function putUnit(unitInMS)
{
__unit = unitInMS
__startTimer()
}
function getUnit()
{
return __unit
}
//
// 当前单位数
//
function getUnitCount()
{
return __unitCount
}
//
// 实际的时钟处理函数
//
function __timerEventHandler()
{
__unitCount++
eventUnit.fire(createEventObject())
if (__unitCount >= __interval)
{
eventTimer.fire(createEventObject())
__unitCount = 0
}
}
//
// 时钟控制函数
//
function __stopTimer()
{
if (__handleInterval != null)
{
clearInterval(__handleInterval)
__handleInterval = null
}
__unitCount = 0
}
function __startTimer()
{
__stopTimer()
__handleInterval = setInterval(__timerEventHandler, __unit)
eventUnit.fire(createEventObject())
}
//
// 时钟周期
//
function putInterval(intervalInSeconds)
{
__interval = intervalInSeconds
if (__enabled)
{
__startTimer() //restart
}
}
function getInterval()
{
return __interval
}
//
// 时钟状态
//
function putEnabled(beEnabled)
{
if (__enabled == beEnabled)
return
if (beEnabled)
__startTimer()
else
__stopTimer()
__enabled = beEnabled
}
function getEnabled()
{
return __enabled
}
//
// 重置
//
function reset()
{
__unitCount = 0
if (__enabled)
__startTimer()
}
</script>