《游标卡尺的认识》开发手记_第1页
《游标卡尺的认识》开发手记_第2页
《游标卡尺的认识》开发手记_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

游标卡尺的认识开发手记最初,我曾用Authroware制作了游标卡尺读数训练,但其身躯实在庞大,优化后也有1M多,伴随着Flash开发课件的热潮,我也把其改为Flash版。并增加了不少功能。整个程序开发分为两个部分,首先是界面的设计,以及各对象的制作。先要进行一个整体规划,主尺多长、每个线条之间的间距为多少合适都要事先计算好。在制作过程中一定要做到规范化,在绘制游标尺和主尺时,精确是关键,各部分的比例,以及总体规划各部分的位置,都十分重要。在制作过程中,可以充分利用Flash的放大功能,选中工具、箭头工具,对各部分形状进行微调。绘制出四套刻度系统,在制作时,一定要精确,可以利用Information面板对线条的长度、坐标进行精确定位。对于不同的部分制成不同的零件(MovieClip),以供调用。在主界面中,为了达到满意的效果,要合理安排分层,比如游标尺要处于主尺和主尺上面的“内测量爪”部分之间。在游标尺部件中,螺丝要放在尺身的下面。在进行放大镜的设计时用到了遮罩。注意在Flash中,遮罩层的对象在函数中是不能移动的,而其整体和被遮盖部分是可移动的。第二个部分就是ActionScript代码的编写。这是画龙的点精之笔,只有这一部分,才能使原有的图形活起来。在Flash的祯、按钮、影片剪辑上都可以使用ActionScript。几个关键的action代码如下:1读数函数function dushu () /读数 在第一祯上 sj = (getProperty ( _root.yc, _x )-_root.yccw)/4; /由坐标位置关系求出精确的实际读数 if (_root.pp=1) /根据游标尺的类型返回不同的值(为了读数更精确,采用末位四舍五入 sj = Math.round (sj*10)/10; else if (_root.pp=2) sj = Math.round (sj*20)/20; /精确度为0.05 else if (_root.pp=3) sj = Math.round (sj*50)/50; /精确度为0.02 if (sj)=int(sj) /如果读数为整数精确到十分位 sj = String ( sj )+.0; if (_root.pp1) and (Number (sj)*10)=int(Number (sj)*10) sj = sj+0;/如果分度值不是十分度并且只有一位小数则精确到百分位 return (sj); /返回读数2 深度尺onClipEvent (mouseMove) setProperty (_root.sdc, _x, getProperty ( _root.yc, _x )+382); /382深度尺和游标尺间的距离常数3游标尺onClipEvent (mouseDown) if (_root.yc.LM.kd!=0)and(hitTest( _root._xmouse, _root._ymouse) /开关打开并且鼠标指针在尺上 startDrag (_root.yc, false, 110.6, 146.7, 430, 146.7); /游标尺拖动范围间的距离常数 tellTarget (_root.mc_ds) /显示读数 play (); onClipEvent (mouseUp) stopDrag ();4紧固螺丝on (release) /开关状态转换 if (kd!=0) setProperty (_root.yc.LM, _y, getProperty ( _root.yc.LM, _y )+2); kd = 0; else setProperty (_root.yc.LM, _y, getProperty ( _root.yc.LM, _y )-2); kd = 1; 5放大按钮on (release) setProperty (_root.magic, _visible, true); /打开放大镜 magicflag = true; if (magicflag) var x=0; var x1=0; x = (getProperty (_root.yc, _x )-_root.yccw)/4; /由坐标位置关系求出精确的实际读数 x1 = x*100-100*int(x); /实际读数的小数点后两位的100倍 if (pp=1) x1 = x1*0.36; / *10*(9/10)*4 /100 (卡尺每分度间隔四象素)(游尺长度*比例系数*每刻度长度/100倍) else if (pp=2) x1 = x1*0.76; / *20*(19/20)*4/100 else x1 = x1*1.96 / *50*(49/50)*4/100 ; setProperty (_root.magic, _x, x*4+59.6+yccw + x1); / 放大镜的位置,59.6为放大镜在0刻度时和游标尺在0刻度时的位置相差常数(x*4)为主尺读数+59.6+yccw)为当前主尺读数坐标亦为游标尺当前零点处坐标)+x1(游标尺当前对其位置处坐标) if (_root.pp = 1) setProperty (_root.magic.fd10, _visible, 1); setProperty (_root.magic.fd20, _visible, 0); setProperty (_root.magic.fd50, _visible, 0); else if (pp = 2) setProperty (_root.magic.fd10, _visible, 0); setProperty (_root.magic.fd20, _visible, 1); setProperty (_root.magic.fd50, _visible, 0); else setProperty (_root.magic.fd10, _visible, 0); setProperty (_root.magic.fd20, _visible, 0); setProperty (_root.magic.fd50, _visible, 1); setProperty (_root.magic.fd, _xscale, 800); setProperty (_root.magic.fd10, _xscale, 800); setProperty (_root.magic.fd20, _xscale, 800); setProperty (_root.magic.fd50, _xscale, 800); setProperty (_root.magic.fd, _yscale, 200); setProperty (_root.magic.fd10, _yscale, 200); setProperty (_root.magic.fd20, _yscale, 200); setProperty (_root.magic.fd50, _yscale, 200); setProperty (_root.magic.fd, _x, -(x*4+x1)*8); /主尺刻度位移量(使刻度线返回到正确位置) setProperty (_root.magic.fd10, _x, -(x1)*8); /游标刻度尺刻度位移量 setProperty (_root.magic.fd20, _x, -(x1)*8); setProperty (_root.magic.fd50, _x, -(x1)*8); 6放大图形onClipEvent (mouseDown) if (this.hitTest(_root._xmouse,_root._ymouse) setProperty (_root.magic, _visible, 0); magicflag = false; 7读数ds = _root.dushu();8确定on (release) if (_root.result.da=_root.dushu() setProperty (_root.dh, _visible, true); setProperty (_root.ch, _visible, false); setProperty (_root.yc, _x, _root.yccw+random ( 300 ); else setProperty (_root.dh, _visible, false); setProperty (_root.ch, _visible, true); 9求救on (release) _root.result.da = _root.dushu(); setProperty (dh, _visible, 0); setProperty (ch, _visible, 0);几个关键的变量:jq = 0.1mm;pp = 1;yccw = 110.6; /游标尺的初始坐标位置magicflag = false;kd!=0ds = _root.dushu();sj = (getProperty ( _root.yc, _x )-_root.yccw)/4; /由坐标位置关系求出精确的实际读数d1 = int (100*sj)-10*int(10*sj); /百分位d2 = int (10*sj)-10*int(sj); /十分位d3 = int(sj); /整数部分x = (getProperty (_root.y

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论