150 likes | 282 Views
处理时间日期的技法. 项目:动感电子钟. 案例:实现简易的日历电子钟. Date 类的作用 检索系统的日期和时间值 ( 1 )相对于通用时间,格林尼治平均时或者标准国际时间 ( 2 )相对于操作系统的日期和时间值 创建对象的方法 ( 1 )实例名 = new Date() 创建瞬间系统时间 例:获取当前时间,并以中文方式打印出来 var md:Date=new Date(); var hh=md.getHours(); var mm=md.getMinutes(); var ss=md.getSeconds();
E N D
处理时间日期的技法 项目:动感电子钟
案例:实现简易的日历电子钟 • Date类的作用 检索系统的日期和时间值 (1)相对于通用时间,格林尼治平均时或者标准国际时间 (2)相对于操作系统的日期和时间值 创建对象的方法 (1)实例名= new Date() 创建瞬间系统时间 例:获取当前时间,并以中文方式打印出来 var md:Date=new Date(); var hh=md.getHours(); var mm=md.getMinutes(); var ss=md.getSeconds(); trace(“现在是”+hh+“点”+mm+“分”+ss+“秒”);
案例:实现简易的日历电子钟 案例:查看今天是星期几?用清晰的方式表示 var md=new date(); trace(md.getDay());输出一个数字 Var week=new Array(”日”,”一”,”二”,”三”,”四”,”五”,”六”)//数组下标”0”对应”日” Day=md.getDay(); Trace(“今天是星期”+week[day])
设置输出的年份: Date.getYear() //返回本地时间年份 Date.getFullYear() //返回本地时间4位数年份 Date.setFullYear(n) //设置完整的年份数。返回以毫秒单位的新时间。 案例:查看500年前的今天是星期几? var day_array=new Array("日","一","二","三","四","五","六"); var md:Date=new Date(); var year=md.getFullYear(); md.setFullYear(year-500); var day=md.getDay(); trace("500年前的今天是星期"+day_array[day]);
处理月份和日期: Date.getDate() //返回本地时间日期(几号) Date.getMonth() //返回本地时间月份(几月)+1 Date.setDate(n) //设置某天是当月的第几天。返回以毫秒单位的新时间。 Date.setMonth (n)//设置月份数 日期的数据是从1开始的,月份是从0开始的。 案例:查看当前是几月几号? var md:Date=new Date(); trace(md);//返回当前整个时间 trace(“今天是”+md.getDate()+”号”); trace(“今天是”+ md.getMonth()+”月”);
实现简易的日历电子钟 项目要求 程序运行时显示与当前系统时间同步的日期和时间 解决方案 1.定义2个动态文本,属性面板设置变量名 2. Date类的年月日显示 Date类的时分秒显示(注意时间显示位数,不足2位用0补) 判断长度length(变量名) 3.设置变量名的值
实现倒计时效果 倒时计编程: var now = new Date(); var startTime = now.getTime();//P160 var hasTime = 10; tt_txt.text = hasTime; this.addEventListener(Event.ENTER_FRAME,setTime); function setTime(e:Event) { now = new Date(); var tempTime = now.getTime(); tt_txt.text = String(hasTime-Math.round(((tempTime-startTime)/1000))); if (tt_txt.text == "0") { this.removeEventListener(Event.ENTER_FRAME,setTime); } }
使用间隔函数完成: var i:uint=10; time_txt.text =String(i); var id:uint =setInterval(tt,1000); function tt(){ i--; time_txt.text =String(i); if (i<=0){ clearInterval(id); } }
项目4 动态电子钟 • 项目效果描述: • 能与系统时间同步,模拟时分钞针运动. • 时钟外观、时分秒针要原创 • 要带有日历 • 项目完成要求 • 上交时间4.17下午下课前提 交源文件,发布文件 • 个人独立完成
项目4 动态电子钟 • 创新时钟示例
项目4 动态电子钟 • 项目解决方案 • 设计时钟外观。 • 设计时针、分针、秒针影片剪辑 • 通过Date对象调用成员函数获取系统 日期时间,设定时针、分针、秒针影片 • 剪辑相应的旋转角度。
获得时、分、秒的方法 • getHours() • getMinutes() • getSeconds() • 旋转角度的计算 • 时针转一圈12小时,360度,360/12=30; 为产生渐变效果,以分钟变化来旋转时针,时针每分钟旋转 360/(12*60)=0.5度.即(Hours*60+Minutes)*0.5 • 分针转一圈60分钟, 360度,360/60=6; • 秒针转一圈60秒, 360度,360/60=6;
遮罩显示对象 • 指明一个显示对象是另一个显示对象的遮罩,将遮罩对象设置为被遮罩的显示对象的mask属性. • 设定遮罩 被遮罩的显示对象.mask=遮罩的显示对象; mySprite.mask=maskSprite • 调整遮罩 用作遮罩的显示对象可拖动,设置动画,并动态调整大小, 该显示对象一般要添加到显示对象. • 删除遮罩 mySprite.mask=null
放射状线条(line.fla) package{ import flash.display.MovieClip; //1180,调用的方法 addFrameScript 可能未定义,改为addScriptFrame是属于MovieClip影片剪辑的方法,不是Sprite import flash.display.Graphics; public class lines extends MovieClip{ var x0:uint=280; var y0:uint=200; public function lines(){ var n:uint= 300; for(var i:uint=0;i<n;i++){ graphics.lineStyle(1,0xffffff*Math.random()); graphics.moveTo(x0,y0); graphics.lineTo(500*Math.random()-250+x0,400*Math.random()-200+y0); } } } } • 自定义类lines.as,随机颜色0xffffff*Math.random var lines1:lines=new lines(); stage.addChild(lines1);
放射状线条(line.fla) • 自定义类lines.as,随机颜色0xffffff*Math.random • 创建lines类的实例,并显示在舞台中 var lines1:lines=new lines(); stage.addChild(lines1); 课堂作业:游动鱼儿动画(书P65) 发fish素材.fla文件