返回首页
当前位置: 主页 > 视频动画 > Flash教程 >

FLASH时钟的制作教程

时间:2014-12-14 21:36来源:电脑教程学习网 www.etwiki.cn 编辑:admin

为了大家制作时方便,把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);

 

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

第2祯:

gotoAndPlay(1);


 

如何将自制的时钟放在桌面
1、进入已经做好的时钟的主场景,添加一个图层,导入一张图片做为桌面的背景,尺寸可以同你的显示器分辨率一般大(我的是800*600),将该图层置于最下层,并锁定该图层。
2、其他图层解锁,用黑箭头工具框选整个时钟,打开“窗口—设计面板—变形”面板,约束打勾,缩小时钟比例(如25%),用键盘上的移动键将时钟移到你希望的位置(比如右下角)。
3、打开“文件---发布设置”,选择HTML(.html)格式,系统同时也选中Flash格式,将其他的格式前的勾去掉,选择右侧保存路径(一定要记住了).
4、再点选上面格式栏的“HTML”选项,进入HTML设置区。
5、进行设置:尺寸:百分比;宽高:100x100;品质:高;窗口模式:窗口;HTML对齐:默认;缩放:(默认)显示全部;Flash对齐:居中。
6、点 “发布、确定”。此时保存的时钟是web格式的。
7、打开活动桌面,调出web格式的时钟,点应用、确定。如果觉得效果不理想,再按上面的方法调整,直到满意时止。

 

Flash高级实例:精美时钟的制作(1)


恭喜大家终于学习到这个实例了,这意味着您的Flash水平已经到达了另一个更高的层次。我们就一起探讨一下如何运用较复杂的Actions来制作一个精美的、准确的、具有整点打铃和定时闹铃的时钟。首先看看已经做好的实例。

     

  怎么样?是不是被打动了?那还不快点跟我来:

 
 第一步:基础对象的制作

  1.首先当然是新建一个新动画。

  2.创建一个新的图符并把它命名为clock,用绘画工具先画出时钟的大体轮廓(图1)。
      图1

  3.在放有clock的这一层下面添加一层,绘制一个倒影,使其看起来更具有立体感(图2).然后如图3一样放置.

    
             图3

 制作一个按钮
 4.然后制作一个按钮,命名为dingshiqi(图4),在把它如图5放置.

图4 图5

  5.接下来是制作刻度.创建一个新图符,命名为kedu1.以图符编辑框的中心为中心拉出一条直线(尽量长些),然后打开Transform菜单,以每6度复制式的旋转,再把从横轴起(包括横轴)每五根线转变为可填充线段并加粗且设为红色(如图6).

           图6

 6.创建名为kedu的新图符.把kedu1拖出放在第一层.添加第二层,把如图7所示的图像拷贝过来,再按住Ctrl拉出第二个并填充为黑色,然后缩小,又放回原来的图像中心(图8).将黑色部分删除,得到一条白边.

    图7 图8



  指针效果
 7.把白边图形的中心与刚才的刻度杈的中心对和(图9).把第二层设为遮罩层,得到的效果如图10.


图9 图10


  8.添加第三层,加入1到12的文本数字,如图11.


          图11


  9.分别制作秒针、分针、时针,命名为zhizhen1、2、3(Instance中的Name分别为miaozhen、fenzhen、shizhen)


  导入事先准备好的三幅图
 导入事先准备好的三幅图

  10.导入事先准备好的三幅图,如图12放置.

     图12


  11.加入两个输出文本域,分别命名为xingqi和rq(图13).倒入两个声音文件zheng和ding,右击库中的zheng,点击Linkage进入Symbol Linkage Properties对话框,点选Export this symbol,然后在entifier中输入zheng;ding同样在entifier中输入ding.


     图13

  12.创建新的图符,命名为dingshi1(Instance中的Name为aaa),如图14.

        图14


  创建按钮
 13.创建按钮命名为queding,如图15.

          图15

  14.在场景的第一层时所显示的图如图16,在第二层的时候为图17.

     图16
     图17

Flash高级实例:精美时钟的制作(2)


第二步:编辑脚本

  1.点击clock打开Actions面板.输入:

onClipEvent (load) {
weekArray = new Array('星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六');
monthArray = new Array('1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月');
timedate = new Date();
soundobject = new Sound();
ling = 0;
zheng = 0;
}

  onClipEvent(load)表示当电影剪辑载入时触发动作.
  new Array表示创建新的数组且按顺序排列.
  weekArray = new Array表示将new Array数组的内容赋给weekArray.由于系统的时间都是用数字存储和输出,所以我们就来个对号入座.当现在是星期日的话,那么系统的值是0,其他的以此类推.这时系统的0就会被这条命令对号入座而反馈为星期日.下一句也类同.

  timedate = new Date()表示把新的系统时间存储在timedate中,这样一来我们就可以用变量timedate来调用系统的时间.
  soundobject = new Sound();表示声音型变量.

  ling = 0;
  zheng = 0;表示声明标志变量,以便下面使用.
 2.输入以下命令:

onClipEvent (enterFrame) {
week = timedate.getDay();
weekday = weekArray[week];
year = timedate.getFullYear();
monthnum = timedate.getMonth();
month = monthArray[monthnum];
day = timedate.getDate();
hour = timedate.getHours();
minute = timedate.getMinutes();
second = timedate.getSeconds();
_root.xingqi = weekday;
_root.rq = year+"年"+month+day+"日";
delete timedate;
timedate = new Date();

  onClipEvent (enterFrame)表示在这条命令的范围内的命令不断循环,哪怕整个电影只有一帧.

  week = timedate.getDay();
  year = timedate.getFullYear();
  monthnum = timedate.getMonth();
  day = timedate.getDate();
  hour = timedate.getHours();
  minute = timedate.getMinutes();
  second = timedate.getSeconds();这些语句都是把系统的年、月、日等时间取出并存放在不同的变量中.

  weekday = weekArray[week];
  month = monthArray[monthnum];这两句表示把系统的星期和月用我们事先设置的数组中的字符串来表示,并储存在weekday和month两个变量中.

  _root.xingqi = weekday;
  _root.rq = year+"年"+month+day+"日";表示用名为xingqi和rq的两个文本域分别显示两个时间     .year+"年"+month+day+"日"表示字符串和数字的相加.

  delete timedate;
  timedate = new Date();表示刷新系统时间,如果没有这两句,时钟的时间就不会时时改变,而只会显示   clock载入时的时间.
 3.接下来输入:

if (minute==0 && zheng==0) {
soundobject.attachSound("zheng");
soundobject.start( );
zheng = 1;
} else if (minute<>0) {
zheng = 0;
}
if (_root.d2==minute && _root.d1==hour && ling==0) {
soundobject.attachSound("ding");
soundobject.start( );
ling = 1;
} else if (hour<>_root.d1 or minute<>_root.d2) {
ling = 0;
}
}


  (minute==0 && zheng==0)和(_root.d2==minute && _root.d1==hour && ling==0)等都表示执行的条件.

  soundobject.attachSound("zheng");表示邦定名为zheng的声音(下同).
  soundobject.start( );表示播放邦定的声音(下同).

  这两大段的语句的用意就在于当整点时播放zheng的声音一遍,当时与分的值都等于d1和d2的两个变量的值时播放ding的声音一遍来闹铃.设置zheng和ling的变量是为了控制声音的播放次数为一次.

  4.点击zhizhen1,输入:

onClipEvent (enterFrame) {
miao = _root.clock.second*6;
setProperty ("_root.miaozhen", _rotation, miao);
}

  miao = _root.clock.second*6;表示秒针转动的度数为_root.clock.second*6.

  setProperty ("_root.miaozhen", _rotation, miao);表示将miao的值设置到miaozhen中.

5.点击zhizhen2,输入:

onClipEvent (enterFrame) {
fen = _root.clock.minute*6;
setProperty ("_root.fenzhen", _rotation, fen);
}

  这些语句与上面的类同.

  6.点击zhizhen3,输入:

onClipEvent (enterFrame) {
shi = _root.clock.hour*30+_root.clock.minute*0.5;
setProperty ("_root.shizhen", _rotation, shi);
}


  7.点击dingshiqi,输入:

on (release) {
ifFrameLoaded (1) {
gotoAndPlay (2);
}
}

  8.点击queding,输入:

on (release) {
d1 = _root.aaa.di1;
d2 = _root.aaa.di2;
gotoAndPlay (1);
}

  语句表示当按下鼠标并放开时,di1和di2中的值被保存到d1和d2中(这样就可以解决返回时di1和di2的值不能保存的问题),然后跳转到第一帧播放.

  9.分别在场景的第一帧和第二帧(任意一层)设置如下命令:

stop ();

  OK!所有的工作都完成了,导出你的时钟看看吧!

------分隔线----------------------------
标签(Tag):flash flash实例教程 flash源代码 flash基础教程 flash技巧
------分隔线----------------------------
推荐内容
猜你感兴趣