当前位置:文档之家› Action Script 3.0 练习 制作Flash钟表

Action Script 3.0 练习 制作Flash钟表

Action Script 3.0 练习制作Flash钟表
在互联网中经常可以遇到显示当前时间的钟表程序。

使用ActionScript3的Date()(日期)函数的各种方法,可以方便地获取当前的时间,例如分钟数、秒数和小时数等。

本练习将使用Flash的ActionScript3制作一个钟表程序,如图4-9所示。

图4-9 制作Flash钟表
由于圆周为360度,因此每秒钟秒针将旋转6度,每分钟分针旋转6度,每小时则时针旋转5度(12小时制)。

用Date()函数读取当前的秒、分和小时数后,即可使用rotation属性将指针旋转相应的角度,指示当前的时间。

(1)在Flash中创建影片文件“clock.fla”,并导入背景图像“background.bmp”和矢量钟表素材“clock.ai”,如图4-10所示。

图4-10 导入素材资源
bgimg”,将背景图像拖拽到影片剪辑元件中,如图4-11所示。

图4-11 创建影片剪辑元件
(3)分别在【库】面板中的影片剪辑元件上右击,将影片剪辑元件为ActionScript导出,如表4-8所示。

(4)在【动作】面板中导入计时器类Timer,并创建时间线对象,定义对象的值为1000毫秒,如下所示。

import flash.utils.Timer;
//导入计时器类
var timeline:Timer=new Timer(1000);
//创建时间线对象,定义钟表刷新的值
(5)创建关于背景图像的自定义函数,并在函数中声明对象_bg为背景图像对象,定义其位置,如下所示。

function _background ():void {
//创建自定义函数_background()
var _bg:bgimg=new bgimg();
//创建背景图像类的实例_bg
_bg.x=0;
//定义对象的横坐标
_bg.y=0;
//定义对象的纵坐标
addChild (_bg);
//定义对象在影片中可见
}
(6)创建自定义函数_clock(),并在函数中声明表盘、秒针和分针时针的中心点等对象实例,如下所示。

function _clock ():void {
//创建自定义函数_clock
var _disc:ClockDisc=new ClockDisc();
//创建表盘对象
_disc.x=250;
//定义对象的横坐标
_disc.y=30;
//定义对象的纵坐标
_disc.rotation=10;
//定义对象旋转的角度
addChild (_disc);
//定义对象在影片中可见
var _SHC:SecondHandCenter=new SecondHandCenter();
//创建秒针的中心点图形影片剪辑实例
_SHC.x=334;
//定义中心点图形的横坐标
_SHC.y=206;
//定义中心点图形的纵坐标
_SHC.height=10;
//定义中心点图形的高度
_SHC.width=10;
//定义中心点图形的宽度
addChild (_SHC);
//定义中心点图形在影片中可见
var _HHC:HourHandCenter=new HourHandCenter();
//创建分针和时针的中心点图形影片剪辑实例
_HHC.x=326;
//定义中心点图形的横坐标
_HHC.y=247.5;
//定义中心点图形的纵坐标
addChild (_HHC);
//定义中心点图形在影片中可见
}
(7)创建自定义函数_hand,并在函数中创建分针、秒针和时针对象,定义对象的属性,如下所示。

function _hand ():void {
//创建自定义函数_hand()
var _sh:SecondHand=new SecondHand();
//创建秒针的对象
_sh.x=334;
//定义秒针的横坐标
_sh.y=206;
//定义秒针的纵坐标
_="Second";
//定义秒针对象的名称
addChild (_sh);
//定义秒针在影片中可见
var _mh:MinuteHand=new MinuteHand();
//创建分针的对象
_mh.x=326;
//定义分针的横坐标
_mh.y=247.5;
//定义分针的纵坐标
_="Minute";
//定义分针对象的名称
addChild (_mh);
//定义分针在影片中可见
var _hh:HourHand=new HourHand();
//创建时针的对象
_hh.x=326;
//定义时针的横坐标
_hh.y=247.5;
//定义时针的纵坐标
_="Hour";
//定义时针对象的名称
addChild (_hh);
//定义时针在影片中可见
}
(8)创建自定义函数Clock,用于实现根据时间来控制指针的转动,如下所示。

function Clock (event:TimerEvent) {
//创建自定义函数Clock,参数为时间事件
time ();
//执行自定义函数time()
}
(9)创建自定义函数time(),用于控制分针、秒针和时针按照由Date()函数读取的当前时间转动,如下所示。

function time () {
//创建自定义函数time()
var now:Date=new Date();
//声明日期对象now
var nc:uint = this.numChildren;
//声明自定义对象nc,用于定义刻度子对象
for (var i:uint = 0; i<nc; i++) {
//创建关于变量i的循环
var clocksprite:Sprite = this.getChildAt(i) as Sprite;
//声明显示对象clocksprite,定义其为获取的基类对象
switch () {
//根据对象的名称判断旋转的角度
case "Second" :
//当为秒针时
clocksprite.rotation = now.getSeconds()*6+10;
//对象旋转的角度为当前秒数的6倍加表盘旋转度数
break;
case "Minute" :
//当为分针时
clocksprite.rotation =now.getMinutes()*6+10;
//对象旋转的角度为当前分钟数的6倍加表盘旋转度数
break;
case "Hour" :
//当为时针时
clocksprite.rotation = (now.getHours() * 30) + (now.getMinutes() * 0.5)+10;
//对象旋转的角度为当前小时数的30倍+分钟数的5倍加表盘旋转度数
break;
}
}
}
(10)为时间线对象添加监听的事件,并执行各函数,如下所示。

timeline.addEventListener (TimerEvent.TIMER,Clock);
//为时间线对象添加事件监听
timeline.start ();
//定义时间线对象开始执行
time ();
//执行自定义函数time()
_background ();
//执行自定义函数_background();
_clock ();
//执行自定义函数_clock()
_hand ();
//执行自定义函数_hand()。

相关主题