Flash高级实例:精美时钟的制作(下)
第二步:编辑脚本
1.点击clock打开Actions面板.输入:
onClipEvent (load) {
weekArray = new Array('星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六');
monthArray = new Array('1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月');
timedate = new Date();
soundobject = new Sound();
ling = 0;
zheng = 0;
}
onClipEvent(load)表示当电影剪辑载入时触发动作.
new Array表示创建新的数组且按顺序排列.
weekArray = new Array表示将new Array数组的内容赋给weekArray.由于系统的时间都是用数字存储和输出,所以我们就来个对号入座.当现在是星期日的话,那么系统的值是0,其他的以此类推.这时系统的0就会被这条命令对号入座而反馈为星期日.下一句也类同.
timedate = new Date()表示把新的系统时间存储在timedate中,这样一来我们就可以用变量timedate来调用系统的时间.
soundobject = new Sound();表示声音型变量.
ling = 0;
zheng = 0;表示声明标志变量,以便下面使用.
2.输入以下命令:
onClipEvent (enterFrame) {
week = timedate.getDay();
weekday = weekArray[week];
year = timedate.getFullYear();
monthnum = timedate.getMonth();
month = monthArray[monthnum];
day = timedate.getDate();
hour = timedate.getHours();
minute = timedate.getMinutes();
second = timedate.getSeconds();
_root.xingqi = weekday;
_root.rq = year+"年"+month+day+"日";
delete timedate;
timedate = new Date();
onClipEvent (enterFrame)表示在这条命令的范围内的命令不断循环,哪怕整个电影只有一帧.
week = timedate.getDay();
year = timedate.getFullYear();
monthnum = timedate.getMonth();
day = timedate.getDate();
hour = timedate.getHours();
minute = timedate.getMinutes();
second = timedate.getSeconds();这些语句都是把系统的年、月、日等时间取出并存放在不同的变量中.
weekday = weekArray[week];
month = monthArray[monthnum];这两句表示把系统的星期和月用我们事先设置的数组中的字符串来表示,并储存在weekday和month两个变量中.
_root.xingqi = weekday;
_root.rq = year+"年"+month+day+"日";表示用名为xingqi和rq的两个文本域分别显示两个时间 .year+"年"+month+day+"日"表示字符串和数字的相加.
delete timedate;
timedate = new Date();表示刷新系统时间,如果没有这两句,时钟的时间就不会时时改变,而只会显示 clock载入时的时间.
3.接下来输入:
if (minute==0 && zheng==0) {
soundobject.attachSound("zheng");
soundobject.start( );
zheng = 1;
} else if (minute<>0) {
zheng = 0;
}
if (_root.d2==minute && _root.d1==hour && ling==0) {
soundobject.attachSound("ding");
soundobject.start( );
ling = 1;
} else if (hour<>_root.d1 or minute<>_root.d2) {
ling = 0;
}
}
(minute==0 && zheng==0)和(_root.d2==minute && _root.d1==hour && ling==0)等都表示执行的条件.
soundobject.attachSound("zheng");表示邦定名为zheng的声音(下同).
soundobject.start( );表示播放邦定的声音(下同).
这两大段的语句的用意就在于当整点时播放zheng的声音一遍,当时与分的值都等于d1和d2的两个变量的值时播放ding的声音一遍来闹铃.设置zheng和ling的变量是为了控制声音的播放次数为一次.
4.点击zhizhen1,输入:
onClipEvent (enterFrame) {
miao = _root.clock.second*6;
setProperty ("_root.miaozhen", _rotation, miao);
}
miao = _root.clock.second*6;表示秒针转动的度数为_root.clock.second*6.
setProperty ("_root.miaozhen", _rotation, miao);表示将miao的值设置到miaozhen中.
5.点击zhizhen2,输入:
onClipEvent (enterFrame) {
fen = _root.clock.minute*6;
setProperty ("_root.fenzhen", _rotation, fen);
}
这些语句与上面的类同.
6.点击zhizhen3,输入:
onClipEvent (enterFrame) {
shi = _root.clock.hour*30+_root.clock.minute*0.5;
setProperty ("_root.shizhen", _rotation, shi);
}
7.点击dingshiqi,输入:
on (release) {
ifFrameLoaded (1) {
gotoAndPlay (2);
}
}
8.点击queding,输入:
on (release) {
d1 = _root.aaa.di1;
d2 = _root.aaa.di2;
gotoAndPlay (1);
}
语句表示当按下鼠标并放开时,di1和di2中的值被保存到d1和d2中(这样就可以解决返回时di1和di2的值不能保存的问题),然后跳转到第一帧播放.
9.分别在场景的第一帧和第二帧(任意一层)设置如下命令:
stop ();
OK!所有的工作都完成了,导出你的时钟看看吧!