当前位置: 电脑软硬件应用网 > 设计学院 > 图像处理 > 正文
真实源于转动 用Flash 5制作转动时钟
真实源于转动 用Flash 5制作转动时钟
2005-12-30 19:01:20  文/佚名   出处:电脑软硬件应用网   

  描述

  内容描述:使用Flash 5中的时间对象制作一个转动的时钟,该时钟时、分、秒针的转动与系统的时间一致。

  组成元素:时、分、秒三个电影夹子(h0,m0,s0),时间的刻度图形符号两个(a、b), 
时间的输出文本框一个(timenow)。

  制作步骤

  1、如图1所示,在一个新的Flash文档中画两个符号,并分别把它们转换成图形符号a、b(选中后按F8),用于制作时钟正点的刻度;


图1

  2、双击图形符号a,进入编辑状态,打开信息面板(窗口\面板\信息),将图形的位置设置在(0,-160);

  3、回到主场景,选中a,打开转换面板,在“旋转”后的空白中输入30,不断点击面板右下角的第一个按钮,复制出12个a,由于我们刚才设置了a中符号的位置,所以这12个a都绕a的中心(0,0)排成一个圈,即处于12个时间正点的位置;

  4、为了美观,我们删去处于12、3、6、9时间点的a,用同样的方法将b中的图形位置放在(0,-160),再复制四个b,放在这四个位置上,只是把旋转的角度改为90;

  5、回到主场景中,按住Shift键点击这四个b,用方向键调整它们的位置与刚才做好的8个a相适应;

  6、选中这12个图形符号,按Ctrl+G将它们组合,完成表盘的制作;另外,可以双击这个组合,在他们内部添加一些装饰如文字称底、时刻代码等,将界面加以美化;

  7、在主场景中画出时针、分针、秒针(注意长度与做好的表盘相适应,如图2),并分别将它们转换成电影夹子h0、m0、s0,同样,分别进入它们的编辑状态,调整它们的转动轴点位于影片的中心;

  8、回到主场景中,在实例面板中将时、分、秒影片的名称分别改为h0、m0、s0;


图2

  9、分别点击秒、分、时影片及刚才做好的表盘,按Ctrl+Shift+↓(向下方向键)调整它们的顺序;

  10、将时、分、秒针影片在轴点对齐,而且都指向12点(如图3);


图3

  11、点击文本工具,在主场景中拖出一个文本框(能容纳20个字符就行),在文本框属性面板中设置为“动态文本”,变量名为timenow。

  代码输入

  在第三帧插入一个普通帧,并新建一层。并完成如下步骤:

  1、在时间线双击第一帧,在弹出的动作面板中加入以下代码:

  command ("fullscreen", "true");//全屏显示

  mydate = new date ();//定义一个时间对象的实例

  hour = Number(mydate.getHours());

  hour = hour%12;//获取系统当前时间(时)并把它转化为12小时制

  minute = Number (mydate.getMinutes());//获取当前分数

  second = Number (mydate.getSeconds())-1;//获取当前秒数

  h = (hour*30+minute*0.5+second*0.0833)%360;//将当前时针基于初始位置的转动幅度赋予变量h

  m = (minute*6+second*0.1)%360;

  s = (second*6)%360;

  setProperty ("h0", _rotation, h);

  setProperty ("m0", _rotation, m);

  setProperty ("s0", _rotation, s);

  angle = s;

  angleh = h;

  anglem = m;//将当前时、分、秒针的初始角度分别赋予三个变量

  2、在第二帧插入关键帧,在动作面板中加入以下代码:

  mydate = new date();

  day = mydate.getDate();

  month = mydate.getMonth()+1;

  second = mydate.getSeconds();

  week0 = mydate.getday();//获取当天是星期几

  if (Number(week0) == 1) {

  week0 = "一";}

  if (Number(week0) == 2) {

  week0 = "二";}

  if (Number(week0) == 3) {

  week0 = "三";}

  if (Number(week0) == 4) {

  week0 = "四";}

  if (Number(week0) == 5) {

  week0 = "五";}

  if (Number(week0) == 6) {

  week0 = "六";}

  if (Number(week0) == 0) {

  week0 = "日";} //以上把获取的星期数字号码转换成大写

  if (day<10) {

  day = "0"+String(day);} //将一位数的日期号码转换成两位

  if (moth<10) {

  month = "0"+String(month);} //系统的月份从0开始计数,故要进行转换

  timenow = mydate.getFullYear() +"."+month+"."+day+"\t星期"+week0;

  if (s != second) {

  s = second;

  angle = angle+6;

  setProperty ("s0", _rotation, angle);//设置秒针的当前位置;每一秒秒针的转动角度为6(360度/60秒)度

  anglem = anglem+0.1;

  setProperty ("m0", _rotation, anglem);

  angleh = angleh+0.0083;

  setProperty ("h0", _rotation, angleh);

  }

  3、在第三帧插入关键帧,并在动作面板中加入以下代码:

  gotoAndPlay (2);//进入第二帧循环获取系统的当前时间,并设置相应指针的旋转角度。

  到此,本实例就全部完成了。按Ctrl+Enter键测试一下,可以看到秒针一秒一秒地转动,文本框里显示了当前的时间信息,而分针与时针也在偷偷地运转。


 

  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    解决Fla文件编译SWF后体积过大
    Flash代码收集及常见问题解决方法
    网页不能播放flash的解决
    flash9.ocx 加载错误解决方法
    IE(浏览器)无法显示Flash文件
    新鲜玩法 Flash动画用电视观看
    Flash制作地室中的幽灵火焰
    用Flash制作即指即现的广告条
    经典!给FLASH初学者的10点制作经验
    javascript的下雨效果,比flash的…
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号