积少成多Flash(4) - ActionScript 3.0 实例之Hello World, 时钟, 计时器
2009-11-05 00:00:00 来源:WEB开发网3、计时器
在 UI上放置4个动态文本,分别对应时,分,秒,毫秒,分别取名为 txtHour,txtMinute,txtSecond,txtMillisecond。再放置3个按钮,分别对应计时器的启动,暂停,停止操作,分别取名为btnPlay,btnPause,btnStop
Hello.as
// 包
package
{
// 导入相关的类
import flash.display.MovieClip;
import fl.events.ComponentEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.text.TextField;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.utils.getTimer;
import code.Greeter;
public class Hello extends MovieClip
{
// 构造函数
public function Hello()
{
InitTimer();
}
/**//*---- 计时器的 Demo 开始 ----*/
// 计时器需要显示的 时,分,秒,毫秒 变量
var hour:Number = 0;
var minute:Number = 0;
var second:Number = 0;
var millisecond:Number = 0;
// 计时器是否在计时
var running:Boolean = false;
// 播放器加载的总时长
var playerLength:Number = 0;
// 计时器暂停的总时长
var pauseLength:Number = 0;
// 计时器计时的总时长
var timerLength:Number = 0;
function InitTimer()
{
// 设置暂停按钮初始为隐藏状态
btnPause.visible = false;
// addEventListener(EventType.EVENT_NAME, eventResponse) - 为对象添加事件监听器
// EventType.EVENT_NAME - 事件类型
// eventResponse - 事件处理器(响应该事件的方法)
// 为 3 个按钮增加 Click 事件的事件处理器
btnPlay.addEventListener(MouseEvent.CLICK, clickHandler);
btnPause.addEventListener(MouseEvent.CLICK, clickHandler);
btnStop.addEventListener(MouseEvent.CLICK, clickHandler);
// 每次进入此帧时的事件处理器
// 因为本例就 1 帧,速率为 30 fps,所以每 1/30 秒会触发一次此事件
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
function clickHandler(event:MouseEvent):void
{
// event.target - 触发此事件的对象
switch(event.target)
{
case btnPlay:
playTimer(); // 启动计时器
btnPlay.visible = false;
btnPause.visible = true;
break;
case btnPause:
pauseTimer(); // 暂停计时器
btnPlay.visible = true;
btnPause.visible = false;
break;
case btnStop:
stopTimer(); // 停止计时器
btnPlay.visible = true;
btnPause.visible = false;
break;
}
}
function enterFrameHandler(event:Event):void
{
if (running)
{
// 当前计时器需要显示的时间
var goTime:Number = getTimer() - pauseLength - timerLength;
// 从总的毫秒时间中解析出时间的 时,分,秒,毫秒 部分
// Math.floor(val:Number) - 返回小于等于指定数字的最接近的整数
hour = Math.floor( goTime/3600/1000 );
minute = Math.floor( (goTime/3600/1000 - hour) * 60 );
second = Math.floor( ((goTime/3600/1000 - hour) * 60 - minute) * 60 );
millisecond = Math.floor( goTime - (second + minute*60 + hour*3600) * 1000 );
// 在 UI 上显示格式化后的时间
txtSecond.text = formatNumber(second);
txtMinute.text = formatNumber(minute);
txtHour.text = formatNumber(hour);
txtMillisecond.text = formatNumber2(millisecond);
}
}
// 停止计时器。相当于暂停计时器,然后数据归零
function stopTimer():void
{
txtHour.text = "00";
txtMinute.text = "00";
txtSecond.text = "00";
txtMillisecond.text = "000";
// 计时器总的启动时长
timerLength = getTimer() - pauseLength;
pauseTimer();
}
function playTimer():void
{
// 计时器总的暂停时长
pauseLength += getTimer() - playerLength;
running = true;
}
function pauseTimer():void
{
// getTimer() - 播放器(swf)被加载后,所经过的时长。单位:毫秒
playerLength = getTimer();
running = false;
}
// 格式化 时,分,秒,返回长度为两个字符的字符串
function formatNumber(n:Number):String
{
if( n < 10 )
return ("0" + n.toString());
return n.toString();
}
// 格式化 毫秒,返回长度为三个字符的字符串
function formatNumber2(n:Number):String
{
if( n < 10 )
return ("00" + n.toString());
else if (n < 100)
return ("0" + n.toString());
return n.toString();
}
/**//*---- 计时器的 Demo 结束 ----*/
}
}
OK
本文示例源代码或素材下载
Tags:积少成多 Flash ActionScript
编辑录入:爽爽 [复制链接] [打 印]- ››flash文件的压缩方法(swf文件压缩瘦身)
- ››Flash鼠绘教程:临摹徐悲鸿的骏马图
- ››Flash实例:AS3制作茶杯震动动画
- ››Flash AS 3.0实例教程:Main类打造发散效果
- ››Flash cs3仿真艺术设计3.6:运用遮罩打造焦点效果...
- ››Flash cs3仿真艺术设计4.1:阴影的基本运用
- ››Flash CS4教程:3d工具实例和骨骼工具
- ››flash加载外部文本文件的3种方法
- ››flash在有限的页面内制作大的地图
- ››Flash教程:AS代码制作计时器方法
- ››Flash AS教程:propertydata问题解决
- ››FlashFXP v4.0.0 Build 1486 RC2 [烈火汉化]
更多精彩
赞助商链接