1、用FLASH 制作机构运动参数化动画转一前言江苏电大宜兴学院从去年下半年开始筹建网上在线学习网页专题机构运动分析()。这个专题主要讨论机械设计中运动方案的分析与设计问题。网页内容包括:教学信息、课程精讲、动感课堂、例题讲解、同步练习、在线考试和学习论坛等若干个方面。其中动感课堂:是一个数字化资料信息库,它向师生展示用Flash制作的“机构运动“动画,提供教师和学生在线学习,既辅助教师进行课堂教学,学生也可以根据自己的需要进行自学。学生可以其学习进度,查找符合其学习需要的课件,以满足个人学习需求。显然,课程精讲是本专题的核心,而动感课堂则是辅助解决本核心问题的数字化资料信息库。我们选用了当今最先
2、进的网络化制作软件FLASH。它的流技术使得我们的课件能在互联网上直接被调用,满足了我们的在线课堂的需要。我们的机构运动分析在线课堂制作了近百个专题动画,个个形象生动,播放流畅。其中初步研制的二十几个参数化动画,(如图一所示),更为在线课堂的学习增添光彩。在线学习强调交互性,强调从初步的感知到理性认知,一个参数化动画它给你一个这样的可能:先从整体去了解一个机构运动的样貌;它留给你一些可让你填写的“标签“ ,填上不同的数值,运行的样子就不同;也可以让你边填边想;也可以让你先算算结果,再和“老师“比较。这样反复的磨合,从感知到认知。难点解决了,重点解决了。真正体现了“动感课堂“为网络学习服务的重要
3、作用。二参数化动画实例效果说明:“对心曲柄滑块机构“:该机构因导路的中线通过曲柄的回转中心而得名。该机构能把曲柄的回转运动转换为滑块的往复直线运动或作相反的转变。如图二所示,这是一个参数化动画。按PLAY按钮启动动画,曲柄旋转带动连杆和滑块往复运动。是曲柄的角速度,从可输入的文本框内输入不同的数值,以改变的数值。这样动画会按的数值指令的改变而改变运动的状态。或按STOP按钮让动画停止。与此同时动画还给出了滑块的位移和滑块速度的瞬时值,让学生观察了解该机构的运动状态且通过瞬时数值的定量分析对运动的细节更加明确。三参数化动画制作过程:参数化动画是动感课堂中的精髓,它解决了教学的难点并体现了动画灵活
4、交互的特性。如何把FLASH参数化动画做好,这是问题的关键。基本做法和步骤如下所述:1.选定应分析和表现的对象,建立若干个电影夹,并为电影夹赋名。“对心曲柄滑块机构“是机构运动中带典型意义的一种机构运动机构。把它作为例子来研究参数化动画,体现FLASH交互的强大功能很有好处。这里选定曲柄、连杆和滑块为分析和表现的对象。创建曲柄、连杆和滑块三个电影夹,并分别命名为a、b、d。2.寻找这若干的对象相互之间的内在关系。“对心曲柄滑块机构“运动表现形式为:曲柄作匀速圆周运动,其外端带着连杆的左端点也作匀速圆周运动。连杆的右端带着滑块,在水平轴线来回往复运动。从整体来看,曲柄绕中心点旋转的同时,连杆左端
5、上下摆动,连杆右端在水平轴线上左右运动,滑块则也在水平轴线上左右运动。那么它们三者之间的内在关系是怎样的呢?先讨论曲柄和连杆的关系:设定曲柄和连杆初始位置在水平轴线上。曲柄开始以t角度顺时针旋转,转至A点时,曲柄转过角。连杆转过角度为。应有:h=a*sinh=L*sinsin=h/L=a*sin/L=t=arcsin(a*sin/L)=arcsin(a*sint/L)上述的推断过程是令曲柄以t匀速旋转,则从动的连杆摆动的角度必须符合这样的关系式才能尾尾跟随;而连杆这个递变的角度也只和t有关联。另方面,滑块在水平轴线上左右运动,其运动规律是按正弦规律变化的,其最大值就是曲柄的半径。而连杆右端是连
6、着滑块的,连杆的运动可理解为整体随右端点按正弦规律左右平动,同时左端跟随曲柄上下摆动。这样曲柄、连杆和滑块三者都与t有机地联系着,这样就为编程找到了相关联的变量。3.两层三帧法的表现方法。做FLASH参数化动画我们一直是用两层三帧法,简介如下:第一层为主界面。包括场景界面装饰;播放、暂停、按钮;可输入变量数值的标签等。第二层是核心:分三个关键帧编写Action(程序)。其中第一帧是对象的初始化程序;第二帧是运行主程序;第三帧跳转回第二帧使得动画能连续地播放。下面将用例子再详细介绍两层三帧的制作方法。4,实施:“对心曲柄滑块机构“参数化动画具体制作如下:第一层主界面:包括场景界面装饰;播放、暂停
7、按钮;可输入变量数值的标签等(图六)。第二层是是核心:第一关键帧要制作三个运动对象的电影夹(电影夹的制作方法参考有关书籍的介绍这里不作说明):曲柄命名为a,连杆命名为b,滑块命名为d(图七)。双击这第一关键帧,打开编程对话框,编程如下:(图八是它的界面和编程窗口)setProperty(“a“,_rotation,0);(设置曲柄初始旋转属性)setProperty(“b“,_rotation,0);(设置连杆初始旋转属性)ax0=GetProperty(“a“,_x);ay0=GetProperty(“a“,_y);dx0=GetProperty(“d“,_x);dy0=GetPropert
8、y(“d“,_y);(这四行是设置曲柄和滑块的初始位置值)a=36;(设置曲柄旋转半径和滑块、连杆平动的最大范围值为36)L=125;(设置连杆的长度)=6;(设置的初始值为6)第二关键帧:保持主场景三个运动对象位置不变。编程如下:t=t+1;(设置电影夹播放时间递增值)setProperty(“a“,_rotation,t);(曲柄旋转角度随时间递增的规律)setProperty(“b“,_x,s);(设置连杆水平位移变量为s)setProperty(“d“,_x,s);(设置滑块水平位移变量为s)n=w*t*Math.PI/180;(变角度为弧度)s=ax0+L+36*Math.sin(n
9、-Math.PI/2);(设置变量s和t的关系)m=36*Math.sin(n)/L;(设置变量m和t的关系)k=Math.asin(m)*180/Math.PI;(设置变量k和m的关系)setProperty(“b“,_rotation,k);(设置连杆旋转变量为k)v=36*w*Math.sin(n);(滑块的瞬时速度值)x=36*Math.sin(n-Math.PI/2);(滑块的瞬时位移值)if(t=360/)t=0;(如果运行一个周期,时间值重置为0)第三帧为空白关键帧,只有一行程序语句:gotoAndPlay(2);(播放到此必返回第二帧播放)到此,参数化动画已经做好,选取“控制“下拉菜单的“测试电影“就能看到这个参数化动画的运行情况。试改变值,看动画相应的变化。如果不能正常运行,可能是下面的工作未做好。四制作过程应该注意的问题:1三个文本框:可输入变量值的文本框用输入文本框(给文本框赋名为w);显示滑块位移和速度瞬时值的文本框两个用动态文本框(给文本框分别赋名为v、x)。2第二层第一帧要做好三个电影夹并确定其初始位置和为电影夹命名。测试运行时无反应很多情况下是没有把电影夹命名。命名方法见(图七)。3第二层的第一、二帧里都必须包含三个电影夹,且三个电影夹在场景的位置都是一样的。记录激动时刻,赢取超级大奖!点击链接,和我一起参加“2010:我的世界杯Blog日志“活动!