AS3基础教程-第47课-电子时钟(下)
1、我们直接修改代码如下
2、解释一下,本例用到了显示对象的rotat坡纠课柩ion属性,这个属性是一个 度数 值。以时针为例,从12点开始,旋转一周,恰为360°,期间共经历12小时。则一小时对应360/12=30 度那么,要将小时转换为度数,仅需乘以30即可。同理:分针的情况,一周是60分钟【分针转一周就是一个小时】,也是对应360°,那么一分钟对应360/60=6度秒针的情况,一周是60秒钟【秒针转一周就是一分钟】,也是对应360°,那么一秒钟对应360/60=6度
3、故此,三行新增的代码中都不是直接将小时数、分钟数、秒钟数 赋值给 时针、分针、秒针,而是分别乘以了三个不同的数字,这三个数字就是根据步骤2内的分析所推得的
4、测试影片,如下图,已经实现了我们的需求,但是有一个细节要注意,图示时刻是15点35分,一个小时已经过半,但是时针所指的位置却还是在3(对应下午的15点)上,按照现在的代码,必须等到16点的时候,时针才会由3直接跳到4。很明显这个与生活中的情景不一样。缺少了这个变化的过程。
5、所以,现在的代码还需要继续优化。<1>时针的rotation属性在赋值时,不能只考虑小时,还要将分钟也考虑在内,秒钟的就无需考虑了。那么,就在原语句的基础上,新寿喋馒揎增一块代码,+在后方。新增的代码当然是分钟数了,现在来分析一下,如何将分钟数转换为附加的旋转值:一个小时在钟面上是旋转了多少度呢?以3点到4点为例,大家可以看一下表盘,表盘上共有12个数字,对应12个小时,恰好为一周(360度),那么一个小时也就是30度【步骤2内已经分析过了】而,一个小时对应的分钟数是60分钟即:时针的30度 对应分钟数的60分钟,那么,要将分钟数换算为时针的度数,就需要将分钟数除以2<2>同理分析 分针的,此时只看秒钟即可:看一下表盘,一分钟对应多少度呢?步骤2内分析得到的答案是6度而:一分钟=60秒即:分针的6度 对应 秒钟数的60秒,那么,要将秒钟数换算为分针的度数,就需要将秒钟数除以10
6、按照步骤5的分析,代码仅需增加如图的即可:
7、测试影片,现在的效果就很完美了
8、不过,仔细观察发现,秒针在转咿蛙匆盗动的时候 一顿一顿 的,不是连贯的。如果要修改为连贯的,仍然是使用上面的思路,添加一点代码,我们先分析一下:秒钟的下一级就是毫秒,可喜的是,AS3内置劲忧商偌了毫秒,我们可以直接调用之看一下表盘,一秒钟对应多少度?步骤2内已经将换算的结果告知大家了,6度一秒钟=1000毫秒即:秒针的6度 对应 毫秒的1000毫秒,那么,要将毫秒数换算为秒针的度数,就需将毫秒数除以1000/6,也就是乘以6/1000故此,代码修正如下:
9、至此,一个全仿真的flash时钟终于完美实现