选择显示字体大小

flash 教程 - 鼠标拖曳的时钟

先看看效果

flash/swflash.cab height=340 width=495 classid=clsid:d27cdb6e-ae6d-11cf-96b8-444553540000>flashvars" value="13097">access" value="always">flash" pluginspage="http://www.macromedia.com/go/getflashplayer">

现在我们一步一步的来做。

1、新建一个文件,背景白色,新建一个mc,就叫clock吧。进入编辑。先做一个钟面,在一个层上分别做1~12的12个数字,都单独做成mc,实体名(instance name)分别命名为b1,b2...b12,排列成圆环状(这不很难吧,可以加圆形及十字辅助线做),关键在这里--每一个数字mc的中心点并非与数字重合!从clock的角度看,这12个数字mc的中心点全部重叠在钟面的中心。

具体做时,可以增加一个辅助层,把钟面数字原样复制到辅助层上,并完全打散(与数字mc脱离干系),锁定。然后分别对b1,b2...进行编辑,把中心点都放置在十字辅助线的中央,而数字放在圆环上,对齐辅助层上的数字。--这个办法是不是有点笨啊?呵呵,不过mch我还是为此方法整整考虑了33分钟哦。

2、现在来做指针,一共有3根。(废话!)先做分针,依然在clock里面做,新加一层,用直线工具,用点线的线形画竖线,画好了把它转mc--line,注意,中心点放在竖线下端。

回到clock,再按f8,做指针转圈的动画,还是要注意:line的下端对齐中心点,这都是为了保证指针能在钟面中心旋转。在21帧、41帧、61帧按f6插入关键帧,打开transform面板,21帧处旋转120度,41帧处旋转240度,然后全部加motion tween,在60帧处按f6加关键帧,并删除61帧。

同样的方法做时针,当然做的比分针短一点(又是废话!)。秒针呢,我还是想了一个笨办法,让它按部就班的走吧--先按做分针的做法做好,然后从1到60全部加关键帧,然后去掉motion。因为是每秒12帧,所以,我在每2个关键帧之间加11个普通帧(连按11个f5罗,mch我按的手酸死了。)

3、把三根指针在clock中对好中心位置放好,其实不对准也没关系拉,因为下面我在as里面会把它放在它应该呆的地方拉。把时、分、秒针所在mc分别命名为b13,b14,b15

4、现在我们来加as
回到主场景,点选clock,写以下代码
onclipevent (enterframe) {
    // 设定时间变量,确定指针位置
    timedate = new date();
    hour = timedate.gethours();
    minutes = timedate.getminutes();
    if (hour>=12){
        hour=hour-12;
    }
    hourpos = hour*5+int(minutes/12);
    b13.gotoandstop(hourpos+1);
    b14.gotoandstop(minutes+1);
    // 让第一个符号跟着鼠标移动
    b1._x = _xmouse;
    b1._y = _ymouse+120;
    // 让其他符号跟着前一个符号移动
    for (var i = 2; i<=15; i++) {
        temp = eval("b"+i);
        temp.xdis = (eval("b"+(i-1))._x-temp._x)/2+temp.xdis*0.3;
        temp.ydis = (eval("b"+(i-1))._y-temp._y)/2+temp.ydis*0.3;
        temp._x += temp.xdis;
        temp._y += temp.ydis;
    }
}

解释一下:
--因为我们要不断侦察本地机的系统时间,所以用了onclipevent (enterframe)
--timedate = new date();....以下若干行,是建立一个日期对象,读取系统小时、分时,以及把过12点的小时转12进制。根据读取的数字来确定几个指针mc的播放位置,也即指定指针的位置;b13.gotoandstop(hourpos+1);这里hourpos+1就是当零点时能使指针指在12位置,即b13指向第一帧。至于秒针,嘻嘻~~我偷下懒了,让它自己从头走到底了,没有参照系统时间,有兴趣的朋友可以完善它。
--b1._x = _xmouse;...这里开始的代码是做鼠标跟随的。首先让b1跟着鼠标动,(y方向让鼠标和钟面拉开了120)。然后其他mc跟着前一个mc移动。为使代码简洁,设了临时变量temp,用来指定当前移动的mc,至于那个移动公式的意思,用大白话说就是:当前mc的移动距离=(前一mc的x坐标-当前mc的x坐标)/2+二者之间的距离*0.3。y同。这公式的参数是从哪里来的呢,这个...这个...就当它是一个经验公式吧,反正“鼠标甩动”的效果关键就是它的功劳。

总结一下,这个实例的关键是钟面上的所有东西:指针、数字的中心点一定都要重合在一个点,所以在制作他们时一定要注意;鼠标移动后,所有的mc都会一个跟着一个走,最后中心依然是重叠的。


原码在这里下载


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons