• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 理科资料 > 正文

    Flash课件_基于Flash,ActionScript的机械类教学模拟课件研制

    时间:2019-01-14 03:32:41 来源:雅意学习网 本文已影响 雅意学习网手机站

      【摘要】采用Flash ActionScript脚本技术研制了在机械教学中平面曲柄滑块机构和2K-H型周转轮系的教学模拟课件,并与传统的Flash逐帧动画模拟课件作出分析比较,指出基于Flash ActionScript技术的动画模拟方法在机械类教学课件制作中的优越性。
      【关键词】Flash;ActionScript;模拟课件;机械教学
      【中图分类号】G40-057 【文献标识码】B 【论文编号】1009―8097(2009)08―0093―05
      
      随着现代教育技术的发展,采用计算机来制作模拟实验在教学中的应用越来越广泛,特别是在学校实验条件不足、实验器材缺少的情况下,采用计算机模拟部分教学实验具有简单、快捷、成本低廉等特点。而在这类实验教学模拟课件中,模拟的关键在于与现实环境的相互一致性,即能精确模拟或再现现实环境条件下的实验过程。例如,在学校机械类课程的教学中,教学课件不仅要能实现较精确的模拟运动,还要能够让课件具有一定的交互性和仿真性。然而早期的教学用模拟课件一般采用简单的逐帧运动模拟,不能完全反映真实情况下的机械运动效果。为此,本文采用Flash ActionScript脚本程序结合实例详细介绍了平面曲柄滑块机构教学模拟课件和2K-H型周转轮系教学模拟课件的制作过程,并和传统Flash模拟机械课件作分析比较,指出Flash ActionScript技术在制作机械类教学课件中的优越性,以期起到抛砖引玉的作用。
      
      一 传统Flash模拟平面曲柄滑块机构运动模拟课件的制作方法
      
      传统Flash机械教学课件是利用逐帧动画的原理,近似地来模拟机构的运动,并辅以简单的控制,如暂停、播放等。平面曲柄滑块的传统Flash模拟教学课件的制作过程如下:
      创建各杆件及滑块的图形元件,并按相应位置分别放置在Flash主场景中不同的层上,采用补间动画形式建立动画,曲柄元件在总帧内旋转一周,逐帧调整连杆元件及滑块元件的位置和转角使其对应,在action层的最后帧加gotoAndPlay(2)返回第二帧,形成连续的运动机构模型(图1),生成的swf动画模型文件体积约为3KB。其相应元件的对应关系是通过鼠标或键盘方向键调整,类似杆件设计的几何作图法,存在一定人为操作的误差,所以该方法仅是机构运动的简单模拟,且运动情况单一,作为机械教学模拟课件适用范围略显不足。
      
      二 基于Flash ActionScript的平面曲柄滑块机构教学模拟课件的研制
      
      基于Flash ActionScript的动画模拟是利用ActionScript脚本语言结合Flash软件本身绘制矢量图的优势来制作。类似杆件设计的解析法,制作上述平面曲柄滑块机构的教学模拟课件必须要了解其运动的规律。若杆AB为曲柄,长度为l1,BC为连杆,长度为l2,C1、C2为滑块极限位置, H为滑块的行程,e为偏距(图2)。根据机构运动的原理[1],当曲柄AB匀速转动,各节点、滑块及角度 和 之间有如下关系:
      A点的坐标为 ,则
      B点的坐标为;
      C点的坐标为 , ;
      C1点的坐标为 , ;
      C2点的坐标为 , ;
      行程 ;
      角度 和 之间关系有;
      滑块的坐标即为点C的坐标;
      为保证运动可行性,两杆长度还必须有 的关系。
      根据以上关系,设计出平面曲柄滑块机构的动画模型,可以根据输入不同的曲柄和连杆的长度和偏距来观察机构不同的运动变化情况,并显示不同状态下滑块的行程,且曲柄的转速可调。其制作过程如下:
      在Flash中分别创建一个小圆点(节点)的影片剪辑元件和滑块影片剪辑元件,放置在Flash主场景中并分别命名为“da”和“hk”;绘制4个输入文本框和1个动态文本框,分别定义为“sd”、“qb”、“lg” 、“pxj”和“H”,表示输入的速度值、曲柄长度值、连杆长度值和显示行程的值;点A、B、C、C1和C2的坐标分别表示为“xa”、“ya”、“xb”、“yb”、“xc”、“yc”、“xc1”、“yc1”和“xc2”、“yc2”;Flash公用库中引入3个按钮,分别用于确认输入数值和控制运动的播放(命名为“anp”)和暂停(命名为“ans”)(图3)。注意Flash中的y坐标轴正向向下,具体ActionScript程序如下:
      主场景第一帧上的程序:
      this.anp._visible = 0;//隐藏播放按钮
      this.ans._visible = 1;//显示暂停按钮
      this.jg._visible=0;//隐藏输入警告
      xa = this.da._x;
      ya = this.da._y;//将xa和ya表示为点A的坐标值
      i = 90;//定义曲柄初始角度
      v = 5;//定义曲柄初始转速
      l1 = 100;//定义曲柄初始长度,用l1表示
      l2 = 200;//定义连杆初始长度,用l2表示
      e=0;//定义偏距初始值,用e表示
      duplicateMovieClip(this.da, "db", 2);//生成点B
      this.db._x = xa+l1*Math.cos(i*Math.PI*1.0E+00/180);
      this.db._y = ya+l1*Math.sin(i*Math.PI*1.0E+00/180);
      //定义点B的初始位置
      xb = this.db._x;
      yb = this.db._y;//将xb和yb表示为点B的坐标值
      duplicateMovieClip(this.da, "dc1", 3);//生成点C1
      this.dc1._alpha = 50;//改变点C1的透明度为50%
      this.dc1._x = xa+(l2-l1);
      this.dc1._y = ya+e;
      //定义点C1的初始位置
      duplicateMovieClip(this.dc1, "dc2", 4);//生成点C2
      this.dc2._x = xa+(l2+l1);
      this.dc2._y = ya+e;
      //定义点C2的初始位置
      H = this.dc2._x-this.dc1._x;
      //将H表示为行程并显示在文本框H中
      duplicateMovieClip(this.da, "dc", 5);//生成点C
      this.dc._x = xb+l2*Math.cos(Math.acos(l1*Math.sin(Math.atan((xb-xa)/(yb-ya)))/l2));
      this.dc._y = ya;//定义点C的初始位置
      this.hk._x = this.dc._x;
      this.hk._y = this.dc._y;
      //定义滑块的初始位置,即为点C的位置
      this.pj._y = ya+e;
      主场景第二帧上的程序:
      this.dc1._x = xa+Math.sqrt(Math.pow((l2-l1), 2)-Math.pow(e, 2));
      this.dc1._y = ya+e;
      this.dc2._x = xa+Math.sqrt(Math.pow((l2+l1), 2)-Math.pow(e, 2));
      this.dc2._y = ya+e;
      this.pj._y = ya+e;
      H = Math.round((this.dc2._x-this.dc1._x)*100)/100;
      //将H表示为行程并显示在文本框H中(保留两位小数)
      xb = xa+l1*Math.sin(i*Math.PI*1.0E+00/180);
      yb = ya-l1*Math.cos(i*Math.PI*1.0E+00/180);
      this.dc._x = xb+Math.sqrt(Math.pow(l2, 2)-Math.pow((ya-yb+e), 2));
      this.dc._y=ya+e;
      xc = this.dc._x;
      yc = this.dc._y;
      this.hk._x = xc;
      this.hk._y = yc;
      this.pj._y = yc;
      this.createEmptyMovieClip("gan", 1);
      gan.lineStyle(5, 0x333333, 100);
      gan.moveTo(xa, ya);
      gan.lineTo(xb, yb);
      gan.lineTo(xc, yc);//绘制曲柄和连杆
      this.db._x = xb;
      this.db._y = yb;
      if (i>=360) { i = 0;}
      i = i+v;
      主场景第三帧上的程序:
      gan.clear();
      gotoAndPlay(2);
      按钮上的ActionScript程序如下:
      输入确定按钮
      on (release, keyPress "") {
      //将文本框中输入的数值赋给对应的值
       v = Number(sd);
       l1 = Number(qb);
       l2 = Number(lg);
       e= Number(pxj);
       if (l2") {
       i = Number(t1);
       j = Number(t2);
       play();
       if (i>10 || i3 || j

    推荐访问:课件 研制 机械类 模拟

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章