Actionscript 3.0制作Flash小时钟

首先是素材准备,制作时钟,自己设计水平比较好的话,可以自己画一个时钟,如果对自己设计水平不大自信的或者是想省点时间的话就可以到网上搜索素材,自己再稍微加工一下,就可以做个比较满意的作品了,可以用PS也可以用FW,我用的是Firework CS4+Flash CS5 ,从网上http://www.zcool.com.cn/gfx/ZMTIwNDQ0.html下载素材,然后自己稍微处理一下。

素材分层,因为里面是jpg格式的文件,只有一层,所以我们需要用FW把素材单独分层,方便调用。素材准备好之后,插入——新建元件——影片剪辑,分别是底图,时针,分针,秒针。实例名字分别是Mc_dituMc_shizhenMc_fenzhenMc_miaozhen

底图相对舞台水平垂直对齐,时针,分针,秒针都对准12刻度,现在我们来理一下思路:我们先想想,这个时钟是圆的(这是废话-O(_)O哈哈~),然后时针、分针、秒针都指在12点方向。

猜想一下,对于时针,假如1点呢?是不是要顺时针旋转1小时*30°;假如1点半呢?是不是1+30/60=1小时*30°+30/60*30°=1小时*30+1/2*分钟(°);假如13030秒呢?是不是1*30+30/60*30+30/60*60*30(°),你会发现秒对小时的影响太小了,可以忽略不算。

对于分针,360°/ 60=6°,也就是说1分钟旋转6°,可是1分钟30秒呢,同样的是1+30/60=1分钟*6+30/60*6(°)=1分钟*6+1/10*秒(°)。

对于秒针,很显然16°。

以此类推出要旋转的角度就是:小时,h*30+1/2m(°),分钟,m*6+1/10s(°),分钟,s*6(°)。

在第一帧写AS代码如下:

 

 

import flash.utils.Timer;

import flash.events.Event;

import flash.events.TimerEvent;

 

var listen:Timer=new Timer(1000);//定义listen时钟类实例,延时1000ms(1s),不定义重复次数,不断地计时

function shizhong(eve:Event):void //定义shizhong函数,并使用监听功能,返回只能为空,eve这是监听参数属于事件类

 {

     var now:Date=new Date();//定义now日期的实例,时间如果是大于12小时的需要用到

     var h=now.hours;//定义h等于现在的小时

     var m=now.minutes;//定义m等于现在的分钟

     var s=now.seconds;//定义s等于现在的分钟

     if (h>12)

     {

      h=h-12; //因为我们的时针只有12小时,而不是24小时

          }

     Mc_shizhen.rotation=h*30+1/2*m;

     Mc_fenzhen.rotation=m*6+1/10*s;

     Mc_miaozhen.rotation=s*6;

     

     }

 

listen.addEventListener(TimerEvent.TIMER,shizhong);//添加时间事件监听事件,对函数shizhong进行监听

listen.start();//添加了监听别忘了要开始启动计时器

时钟制作完毕,可是我要是看起来效果不好,可以用一下AS3.0的滤镜以及过渡效果,我这里就用了投影的效果,所有代码如下:

 

 

import flash.utils.Timer;

import flash.events.Event;

import flash.events.TimerEvent;

import flash.filters.DropShadowFilter;

 

var listen:Timer=new Timer(1000);//定义listen时钟类实例,延时1000ms(1s),不定义重复次数,不断地计时

function shizhong(eve:Event):void //定义shizhong函数,并使用监听功能,返回只能为空,eve这是监听参数属于事件类

 {

     var now:Date=new Date();//定义now日期的实例,时间如果是大于12小时的需要用到

     var h=now.hours;//定义h等于现在的小时

     var m=now.minutes;//定义m等于现在的分钟

     var s=now.seconds;//定义s等于现在的分钟

     if (h>12)

     {

      h=h-12; //因为我们的时针只有12小时,而不是24小时

          }

     Mc_shizhen.rotation=h*30+1/2*m;

     Mc_fenzhen.rotation=m*6+1/10*s;

     Mc_miaozhen.rotation=s*6;

     

     }

 

listen.addEventListener(TimerEvent.TIMER,shizhong);//添加时间事件监听事件,对函数shizhong进行监听

listen.start();//添加了监听别忘了要开始启动计时器

var touying:DropShadowFilter=new DropShadowFilter();//创建投影实例,默认阴影距离参数是4,可以修改成你想的参数

Mc_shizhen.filters=[touying];//对象Mc_shizhen应用投影滤镜

Mc_fenzhen.filters=[touying];//对象Mc_fenzhen应用投影滤镜

Mc_miaozhen.filters=[touying];//对象Mc_miaozhen应用投影滤镜

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值