登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

强大才能生存

国防、国力、国人

 
 
 

日志

 
 

AS入门教程第8课-日期与时间  

2009-03-13 14:51:31|  分类: AS2.0课堂 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

日期与时间

   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);

本节内容综合实例参见这个教程:

http://bbs.jcwcn.com/viewthread. ... highlight=%2Bsanbos

-------------------------------------------------------------------------------------------------------------

http://blog.sina.com.cn/s/blog_56d3a4e10100b3wh.html

Flash编程-Date(日期)函数

    最近学习了AS的Date(日期)函数,对如何在FLASH使用“日期”有了一定的了解。现将常用的日期函数整理如下,一则与朋友交流,二则自己用之方便。
一、Date 构造函数
    构造一个新的 Date 对象,该对象将保存指定的日期和时间。
    例如:
        d1 = new Date(); //当前时间
        d2 = new Date(2000, 0, 1);//2000 年 1 月 1 日 0:00:00。
        d3 = new Date(65, 2, 6, 9, 30, 15, 0);//1965 年 3 月 6 日 09:30:15
        d4 = new Date(-14159025000);//1969 年 7 月 21 日 02:56:15
    可选参数:
    1、年:0 至 99 之间的值表示 1900 年至 1999 年;否则,必须指定表示年份的所有 4 位数字。
    2、月: 0(一月)到 11(十二月)之间的整数。
    3、日: 1 到 31 之间的整数。
    4、时: 0(午夜)到 23(晚上 11 点)之间的整数。
    5、分: 0 到 59 之间的整数。
    6、秒: 0 到 59 之间的整数。
    7、毫秒: 0 到 999 之间的整数。
    8、时间值(例4中的-14159025000):毫秒数,负值表示 GMT 时间 1970年1月1日 0:00:00 之前的某个时间,而正值表示该时间之后的某个时间。
二、时间函数
    要使用以下的时间函数,必须要先构造一个新的 Date 对象,即一、Date 构造函数所述。为便于说明例构造一个新的 Date 对象:my_date = new Date(); 和一个动态文本,其变量设置为rqxs  
    1、年份函数
    rqxs=my_date.getFullYear();
    按照本地时间动态文本显示指定的 Date 对象中的完整年份值(一个 4 位数,例如 2000)。
    2、月份函数
    rqxs=my_date.getMonth();
    按照本地时间动态文本显示指定的 Date 对象中的月份值(0 代表一月,1 代表二月,依此类推)。
    3、日函数
    rqxs=my_date.getDate();
    按照本地时间动态文本显示指定的 Date 对象中表示月中某天的值(1 到 31 之间的整数)。
    4、星期函数
    rqxs=my_date.getDay();
    按照本地时间动态文本显示指定的 Date 对象中表示周几的值(0 代表星期日,1 代表星期一,依此类推)。
    5、小时函数
    rqxs=my_date.getHours();
    按照本地时间动态文本显示指定的 Date 对象中的小时值(0 到 23 之间的整数)。

    6、分钟函数
    rqxs=my_date.getMinutes();
    按照本地时间动态文本显示指定的 Date 对象中的分钟值(0 到 59 之间的整数)。
    7、秒钟函数
    rqxs=my_date.getSeconds();
    按照本地时间动态文本显示指定的 Date 对象中的秒钟值(0 到 59 之间的整数)。
    8、毫秒函数
    rqxs=my_date.getMilliseconds();
    按照本地时间动态文本显示指定的 Date 对象中的毫秒数(0 到 999 之间的整数)。
    9、时间值函数
    rqxs=my_date.getTime();
    按照本地时间动态文本显示指定的 Date 对象自 1970 年 1 月 1 日午夜(通用时间)以来的毫秒数。当比较两个或更多个 Date 对象时,使用此方法表示某一特定时刻。
三、示例
    1、显示当前年、月、日
    my_date = new Date();
    rqxs = my_date.getFullYear()+"年"+(my_date.getMonth()+1)+"月"+my_date.getDate()+"日";
    2、显示当前时、分、秒
    my_date = new Date();
    rqxs = my_date.getHours()+"时"+my_date.getMinutes()+"分"+my_date.getSeconds()+"秒";
    3、动态显示当前时、分、秒
function sfm(){
    my_date = new Date();
    sjxs = my_date.getHours();
    if (sjxs < 10){
  hour0 = "0" + sjxs;
 }
 else{
  hour0 = sjxs;
    }
    if (sjxs > 23){
  hour0 = hour0 % 24;
 }
    sjfz = my_date.getMinutes();
    if (sjfz < 10){
  minute0 = "0" + sjfz;
    }else{
  minute0 = sjfz;
    }
    sjm = my_date.getSeconds();
    if (sjm < 10){
        second0 = "0" + sjm;
    }else{
        second0 = sjm;
    }
 rqxs = hour0 + ":" + minute0 + ":" + second0 ;
}
setInterval(sfm, 20 + int(random * 100));  

  评论这张
 
阅读(826)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018