网址大全 万能查询 在线翻译 字色渐变 颜色代码 彩字制作 转贴工具 时钟日历 在线广播 网络电视 MTV
发新话题
打印

[转帖] 钟表教材

钟表教材

http://bbs.cnlsj.com/dispbbs.asp?boardID=303&ID=45409&page=1 点击浏览该FLASH文件点击浏览该FLASH文件钟表语句: d = new Date(); miaozhen._rotation=d.getSeconds()*6+d.getMilliseconds()/160; fenzhen._rotation = d.getMinutes()*6+d.getSeconds()/10; shizhen._rotation = d.getHours()*30+d.getMinutes()/2; time = new Date(); hour = time.getHours(); minute = time.getMinutes(); second = time.getSeconds(); if (minute<10) { minute = "0"+minute; } if (second<10) { second = "0"+second; } timetext = hour+":"+minute+":"+second; _root.onLoad = function () { weekArray = new Array("星期曰", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"); monthArray = new Array("1 月", "2 月", "3 月", "4 月", "5 月", "6 月", "7 月", "8 月", "9 月", "10 月", "11 月", "12 月"); timedate = new Date(); }; _root.onEnterFrame = function () { year = timedate.getFullYear(); monthnum = timedate.getMonth(); month = monthArray[monthnum]; week = timedate.getDay(); weekday = weekArray[week]; dweek.text = weekday; day = timedate.getDate(); hour = timedate.getHours(); minute = timedate.getMinutes(); second = timedate.getSeconds(); dday.text = year+"年"+month+""+day+"曰"; delete timedate; timedate = new Date(); }; 在 action 图层第 2 祯插入关键祯,动作面板中输入: gotoAndPlay(1); 点击浏览该FLASH文件本实例制作一款有时针、分针、秒针,且带有曰期、星期和数字 时间显示的模拟时钟。本例将用到一些关于时间的语法函数,如 getFullYear、getMonth、getDay、getDate、getHours、getMinutes、 getSeconds 等,以及_rotation 属性和数组 Array。现在我们就一起完 成这个实例。 启动 Flash MX 2004 软件,建立文档,并以“时钟”名字保存。 一、制作钟盘 1、 设置场景,宽、 高尺寸为 350 px× 350px,蓝色,其他 默认,如图 1: 图 1 执行“插入--新建元件”命令,如图 2 进行设置: 图 2 2、 选中图层 1 的第 1 祯,用椭圆工具,画一个 260×260 无边 框填充色为 放射状正 圆,,色彩随 意, 参考色值 设置如图 3: 260 × 260 图 3 4、用填充变形工具 将图形调成图 4 状: 图 4 5、 用直线工具画一条宽12高为0的线段, 选择对齐面板中的水平中齐、 垂直居中 对齐,然后再利用键盘上的方向键,将 此线段平移至表盘的左边缘, 如图 5 所 示: 图 5 6、用任意变形工具选中线段,将中心点(中间的圆点)移至表盘 中心处的“十字,打开窗口中的变形面板,旋转 30 度,复制 12 次该线段,如图 6: 图 6 7、再用直线工具画一条宽约是上面线段二分之一的线段,同步骤 5 的方法, 将 其置于表 盘左侧, 打 开窗口中 的变形面 板, 旋转 6 度,复制 60 次,如图 7 所示: 图 7 8、选择文本工具 ,做如图 8 所示的设置:按照表盘上的排序,输 入数字 1-12,然后分别点中每一个数字,调整位置,到满意时止,然 后,点中第 1 祯,使表盘、刻度和数字都处于被选中状态,执行“修 改→组合”命令,如图 8: 图 8 9、用椭圆工具画一无笔触色、填充色为线性(色值如图 9 所示)、 宽高为 275×275 的正圆,并用填充变形工具调整角度后,居中对齐。 图 9 10、在选中状态下,执行“修改→ 组合”命令,再执行“修改→排列→移 至底层”命令,效果如图 10 所示: 图 10 11、用椭圆工具,再画一个无笔触色,填充色为线性、宽、高为 315×315 的正圆,色值如图 11 所示,并用填充变形工具调整填充色 的宽度和角度: 图 12、用对齐面板将其全居中,执行 “修改→组合”命令,再执行“修改→ 排列→移至底层”命令,完成后的效果 如图 12 所示: 图 12 二、制作影片剪辑指针元件 13、分别执行“插入→新建元件” 命令,创建时针、分针和秒针三个影片 剪辑元件,指针形状可根据自己的喜好 绘制。但要注意:要将指针的底部偏上 一点的地方和舞台中的十字对齐,如图 13 所示: 图 13 14、制作秒针的阴影。在秒针元件编辑区,插入一个新图层,右 键图层 1 的第 1 祯,选择复制祯,再点中图层 2 的第 1 祯,右键选择 粘贴祯,并颠倒两个图层的位置,下面图层为秒针的阴影,将阴影改 为灰色,并转换为图形元件;在秒针图层的 720 祯插入祯,在阴影图 层的第 1 祯,用键盘上的方向键将阴影元件向右移动 3 个像素,分别 在阴影图层的 180 祯、360 祯、540 祯和 720 祯加关键祯,180 祯处 继续向右移动 2 个像素,360 祯处,先用对齐面板水平中齐,再向左 移动 3 个像素,540 祯继续向左移动 2 个像素,720 祯不要在动(和 第 1 祯位置相同),点中阴影图层,使该图层上的所有祯都处于被选 中状态,在属性面板里创建补间动画。 注:由于该实例的祯频为 12fps,即每秒播放 12 祯,秒针旋转 一周为 60 秒,共计 720 祯,在每个关键祯处改变阴影的位置,就会 产生随着秒针的旋转,阴影的位置也会发生不同的变化的效果。 三、组装时钟元件 15、执行“插入→新建元件”命令,创建时钟影片剪辑元件,如 图 14: 图 14 16、添加六个图层,由下至上分别更名为:钟盘、文本、时针、 分针、秒针、圆心和 action。在选中钟盘图层第 1 祯,从库中拖出制 作完整的表盘图形元件,居中对齐;在圆心图层第 1 祯,选择椭圆工 具,画一个无边框、填充色为一放射状的圆点,置于表盘正中间。除 时针图层外,其他图层加锁,如图 15: 图 15 17、选中“时针”图层,从库中拖出时针元件,在属性面板中将 实例名改为 “shizhen”; 用任意变形工具选中时针元件, 将注册点 (中 间白色的圆点)移至时针元件的十字并与表盘上的中心点重叠,锁定 该图层,如图 16: 图 16 18、锁定时针图层并关闭时针图层的眼睛(便于编辑分针元件)。 选中分针图层第一祯,从库中拖出分针元件,点中分针元件,在属性 面板里将实例名改为“fenzhen”,用任意变形工具,将分针元件的十 字与钟盘上的中心点重叠, 再用任意变形工具,将注册点移到十字 上,锁定该图层,如图 17: 图 17 19、关闭分针图层的眼睛(便于编辑秒针元件)。选中秒针图层 第 1 祯,从库中拖出秒针元件,点中秒针元件,在属性面板里将实例 名改为“miaozhen”,将秒针元件的十字与表盘上的中心点重叠, 再 用任意变形工具, 将注册点移到十字上,锁定该图层,如图 18: 图 18 四、制作动态文本框 20、解开文本图层的锁,锁定其他图层。 点中该图层的第 1 祯,用文本工具拉出三个动态文本框,并分别 输入相应的变量名和实例名,参数设置如图 19 所示: 图 19 五、输入动作脚本 21、将 action 图层的锁解开。选中第 1 祯,打开动作面板,输入如下 语句: d = new Date(); miaozhen._rotation=d.getSeconds()*6+d.getMilliseconds()/160; fenzhen._rotation = d.getMinutes()*6+d.getSeconds()/10; shizhen._rotation = d.getHours()*30+d.getMinutes()/2; time = new Date(); hour = time.getHours(); minute = time.getMinutes(); second = time.getSeconds(); if (minute<10) { minute = "0"+minute; } if (second<10) { second = "0"+second; } timetext = hour+":"+minute+":"+second; _root.onLoad = function () { weekArray = new Array("星期曰", "星期一", "星期二", "星期 三", "星期四", "星期五", "星期六"); monthArray = new Array("1 月", "2 月", "3 月", "4 月", "5 月 ", "6 月", "7 月", "8 月", "9 月", "10 月", "11 月", "12 月"); timedate = new Date(); }; _root.onEnterFrame = function () { year = timedate.getFullYear(); monthnum = timedate.getMonth(); month = monthArray[monthnum]; week = timedate.getDay(); weekday = weekArray[week]; dweek.text = weekday; day = timedate.getDate(); hour = timedate.getHours(); minute = timedate.getMinutes(); second = timedate.getSeconds(); dday.text = year+"年"+month+""+day+"曰"; delete timedate; timedate = new Date(); }; 在 action 图层第 2 祯插入关键祯,动作面板中输入: gotoAndPlay(1); 22、回到主场景,在图层 1 的第 1 祯,从库中将制作好的时钟影 片剪辑元件拖出。 OK!测试存盘。 时钟的语句 为了大家制作时方便,把action图层的动作语句附于此: 第一祯: d = new Date(); _root.sec_mc._rotation = d.getSeconds() * 6 + d.getMilliseconds() / 160; _root.min_mc._rotation = d.getMinutes() * 6 + d.getSeconds() / 10; _root.hour_mc._rotation = d.getHours() * 30 + d.getMinutes() / 2; 第二祯: gotoAndPlay(1); 关于曰期的语句: 第一祯: time = new Date();y = time.getYear(); moon = time.getMonth();today = time.getDay(); day = time.getDate();year = y + 1900; moon = moon + 1;if (today == 1){ sun = ""; today = "一";} // end if if (today == 2){sun = "";today = "二";} // end if if (today == 3){sun = "";today = "三";} // end if if (today == 4){sun = "";today = "四";} // end if if (today == 5){sun = "";today = "五";} // end if if (today == 6){ sun = "";today = "六";} // end if if (today == 0){sun = "曰";today = ""; } 第二祯:gotoAndPlay(1); 报时时钟的语句: function ClockFun() { // 声明一个名为时间对象 time = new Date(); // 时针每小时旋转30度 hour = time.getHours()*30; // 分针,每分钟旋转6度 minute = time.getMinutes()*6; //秒针,每秒钟旋转6度 second = time.getSeconds()*6; // 每过10秒分针度数加1,增加真实性 minute += time.getSeconds()/10; // 每过2分钟,时针度数加1 hour += time.getMinutes()/2; // _rotation是影片的角度属性,用来控制影片实例旋转 秒针._rotation = second; 分针._rotation = minute; 时针._rotation = hour; // 把系统当前月数值赋给变量months months = (time.getMonth()+1); // 如果月数值是个位数,在其前面显示一个零 if (length(months) == 1) { m+months; } // 把系统当前曰数值赋给变量dates dates = time.getDate(); // 如果曰数值是个位数,在其前面显示一个零 if (length(dates) == 1) { dates = "0"+dates; } // 在“曰期”文本框内显示系统曰期 曰期 = time.getFullYear()+"."+months+"."+dates; // 定义一个数组 days = new Array('星期曰', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'); // 把系统的星期值赋给变量day(如星期五时,day的值就是5) day = time.getDay(); // 在“星期”文本框内显示系统星期 星期 = days[day]; // 将系统当前小时的值赋给变量hours hours = time.getHours(); minutes = time.getMinutes(); seconds = time.getSeconds(); // 到零点时,显示两个0 hours = (time.getHours() == 0) ? "0"+hours : time.getHours(); // 如果分钟的值为个位数,就在前面多显示一个零 minutes = (length(minutes) == 1) ? "0"+time.getMinutes() : time.getMinutes(); // 如果秒种值是一位数,就在前面多显示一个零 seconds = (length(seconds) == 1) ? "0"+seconds : time.getSeconds(); // 显示时间 时间 = hours+":"+minutes+":"+seconds; // 声明一个声音对象 gugu = new Sound(); // 把报时声附加到新对象中 gugu.attachSound("报时声"); if (seconds == 0 && minutes == 0) { gugu.start(); } // 每隔10秒钟闹铃一次 if ((时钟 == time.getHours()) && (分钟 == time.getMinutes()) && (time.getSeconds()%10 == 0)) { gugu.start(); } } // 每隔1000毫秒执行一次ClockFun函数 setInterval(ClockFun, 1000);

TOP

谢谢,有时间我得去做个,
用心灵节奏去契合生命的韵律让纯净之心去感知真诚与美好

TOP

发新话题