系统的讲解AS之十二~~~~日期与时间(网雨菲菲)

来源:百度文库 编辑:神马文学网 时间:2024/03/29 09:44:06
http://hi.baidu.com/wangyufeifei/blog/item/adfce9f10c9e68ca7831aa0c.html  Date类提供了对日期和时间的操作方法,在这一节中还将介绍另一个类Timer,它提供了对时间间隔的操作。

要使用Date类首先要创建一个Date类实例:
var now:Date = new Date();

创建了Date实例后,就可以调用Date的方法,来获取当前时间:

getDate()方法:返回当前的号数,返回值是1-31之间。
getDay()方法:返回当前是星期几,0-6,0代表星期日。
getFullYear()方法:返回当前年份,4位数。
getHours()方法:返回当前是几点,0-23。
getMinutes()方法:返回当前是分钟数,0-59。
getMonth()方法:返回前的月份数,0-11。请注意这里是0-11,即0代表1月。那么当前的月份应该是: getMonth() +1.
getSeconds()方法:返回当前的秒数,0-59。
getTime()方法:返回当前时间自通用时间1970年1月1日午夜以来的毫秒数。这个方法常被用来比较两个日期间的距离。比如倒计时牌。

Date类还有很多方法,将上面的方法中的get换为set即把某个时间设置给一个Date对象。

有了上面的方法后,就可以来做一个练习了,首先来做一个显示当前日期的练习。这个练习由两个部分组成:一个是一个电子钟,一个是显示当前时间的文本牌。

1. 首先是做背景,这个按你个人喜好。
2. 做表盘,新建一MC,画一个正圆,将正圆居中对齐。用直线工具在12点位置画一条很短的直线(分钟线),用变形工具将直线的注册点调到十字处。打开变形成面板,在旋转处输入6,然后点下面的旋转并复制按钮,复制59分,这样分钟线就画好了。然后用选择工具将时钟线拉长一些,将12点,3点,6点,9点标出来。这样表盘就做好了。
3. 做表针,建三个MC分别画时针,分针和秒针,每个针均指向12点,针的下端与十字对齐,水来居中。
4. 回到主场景,新建一层,将表盘拖到舞台上放好。
5. 新建一层,将秒针,分针,时针拖入,将针底端与表盘中心对齐。画一个画色的小圆(按对象绘绘制)放要针的尾部,再在黄色的圆上放一个放射填充的圆。
6. 打开属性面板,为表针指定实例名:时针-sz_mc,分针:fz_mc,秒针:mz_mc.
7. 按上面效果,在舞台下半部放7个动态文本框,实例名称分别为:年:y_txt,月:m_txt,日:d_txt,星期:w_txt,时:h_txt,分:min_txt,秒:s_txt.
8.新建一层,命名为:action,打开帧动作面板,输入:

var xq:Array = new Array("日","一","二","三","四","五","六");
function nowtime(){
var now:Date = new Date();
year = now.getFullYear();
mon = now.getMonth();
day = now.getDate();
week =now.getDay();
hour = now.getHours();
minu = now.getMinutes();
second = now.getSeconds();
y_txt.text = year;
m_txt.text = mon+1;
d_txt.text = day;
w_txt.text=xq[week];
h_txt.text=hour;
min_txt.text= minu;
s_txt.text = second;
if(hour>12){
hour=hour-12;
}
sz_mc._rotation = hour*30+minu/2;
fz_mc._rotation= minu*6+second/10;
mz_mc._rotation = second*6;
}
var nowtimeid = setInterval(nowtime,1000);
sdnr_mc.setMask(zz_mc);

下面做第二个练习:倒计时牌


倒计时牌需要4个动态文本,实例名称为:天:tan_txt,小时:xs_txt,分钟:fz_txt,秒钟:mz_txt

代码:

function djs(){
var now:Date = new Date();
var yd:Date = new Date(2009,0,1);
var nows = now.getTime();
var yds = yd.getTime();
var sc = yds - nows;
var tan = Math.floor(sc/(1000*60*60*24));
var tys = sc%(1000*60*60*24);
var xs = Math.floor (tys/(1000*60*60));
var sys = tys%(1000*60*60);
var fz = Math.floor(sys/(1000*60));
var fys = sys%(1000*60);
var mz = Math.floor(fys/1000);
tan_txt.text = tan;
xs_txt.text = xs;
fz_txt.text=fz;
mz_txt.text =mz;
}
var djsid = setInterval(djs,1000);

在上面两个练习中,都用到了setInterval()函数,这是本节要介绍的第二部分内容。
setInterval()函数
该函数可实现每隔多少毫秒调用一次某函数。
用法: var 一个变量名称 = setInterval(要调用的函数名称,间隔的毫秒数);
例: var i = 0;
function dy(){
i++;
trace(i);
}
var dyid = setInterval(dy,1000);
测试影片,每隔1秒钟,将输出1次,从1开始,每次输出增加1。
如果我们要停止setInterval()函数,不让它再调用函数,可用:clearInterval()函数。
用法:clearInterval(存储有setInterval函数的变量名称)
例将上例的代码改为:
var i = 0;
function dy(){
i++;
trace(i);
if (i>10){
clearInterval(dyid);
}
var dyid = setInterval(dy,1000);
测试影片,当输出10次后,不再继续输出了。
还有另一个函数:
setTimeout()函数:
这个函数是在隔多少毫秒后,调用某函数。与setInterval函数不同的是它只调用一次,然后自动删除,而不是反复调用。用法与setInterval函数一样。
例:将代码改为:
var i = 0;
function dy(){
i++;
trace(i);
}
var dyid = setTimeout (dy,1000);
测试影片,在1秒后将输出1,然后不再输出了。
如果要阻止setTimeout调用函数可用:
clearTimeout()
用法clearTimeout(存储有setTimeout函数的变量);
例:clearTimeout(dyid);