当前位置:主页FlashFlash实例抛物运动
抛物运动
夜鹰电脑教学网 责任编辑:陈萍 加入日期:2007-4-3 16:54:00 点击数:
[大字体 中字体 小字体]

Tag: 抛物运动

抛物运动是物体受外力开始运动后,没有再受到外力的作用,其水平运动和垂直运动是彼此独立的。不考虑空气阻力的影响,水平方向的运动是匀速直线运动,垂直方向的运动是自由落体运动,(如图)

一、平抛运动

效果:

源文件下载

步骤:

1. 新建文件800*400像素其他的默认;

2. "ctrl"+F8,创建一个影片剪辑,名称“MC”

3. 回到主场景,"ctrl"+L打开库面版,把刚创建的影片剪辑拖入到舞台,

4. 选中这个MC,打开对齐面版,相对于舞台---左对齐----底对齐,绑定代码:

onClipEvent(load){//MC被加载时,只运行一次 
   x0=_x; 
   y0=_y;      //初使位置 
   v=0;        //球的速度 
   rad=0;      //球的角度,初使值为0 
   t=0;        //运动时间 
   dragtime=0; //小球开始拖动的时间; 
   isdrag=0;   //判断球是否被拖动的变量; 
   isout=0;    //判断球是否抛出去了 
   g=-0.098;   //地心的引力常量 
} 
onClipEvent(mouseDown){//当鼠标按下 
if(hitTest(_root._xmouse,_root._ymouse,true)){  //判断鼠标是否和小球接触 
   isdrag=1;  //如果接触的话,就返回isdrag的值为1,目的只是用来做记号,
           //告诉后面的程序执行相关的事件;
   isout=0; 
   v=0; 
   rad=0; 
   this.startDrag();//开始拖动 
   dragtime=getTimer();//获得拖动的时间 
   } 
} 
onClipEvent(mouseUp){//松开鼠标 
   if(isdrag==1){ 
      isdrag=0; 
      isout=1; 
      t=1; 
      rad=Math.atan2(_y-y0,_x-x0);//弧度为单位计算并返回 y/x 的反正切 
      v=Math.sqrt((_x-x0)*(_x-x0)+(_y-y0)*(_y-y0))/(getTimer()-dragtime); 
      //勾股定理,再用公式:v=s/t求出速度; 
      this.stopDrag();//停止拖动 
   } 
} 
onClipEvent(enterFrame){   //进入贞,MC的Frame不断运行 
   if(isout==1){ 
      _x+=v*Math.cos(rad)*t; 
      _y+=v*Math.sin(rad)*t-(g*t*t)/2;//见图解(平抛运动的公式) 
      t++;//t=t+1; 
      if(_x>800 or _y>400 ){//如果超出舞台的范围,就重设置MC的位置 
         isout=0; 
         _x=x0; 
         _y=y0; 
      } 
   } 
}

补充:由于抛物运动把时间计算在内的,所以不能单*enterFrame时事件改变小球的位置
加入变量“t”,每次触发enterFrame事件时,代表一个单位的时间变化,我这里用的是12.0fps

二、竖直上抛运动

物体以一定初速度沿竖直方向,向上抛出后,只受重力作用下的运动。

竖直上抛运动可分为两个阶段来,一个是上升过程,这时它的初速度和重力加速度g方向相反,是匀减速直线运动。上升到最高位置的时候,末速度为零,因此这个时候,物体开始作自由落体运动

这里就只补充程序几个思路吧,就不用物理公式来做了,原理是一样的

步骤:

1. 新建文件550*400像素其他的默认;

2. "ctrl"+F8,创建一个影片剪辑,名称“MC”

3. 回到主场景,"ctrl"+L打开库面版,把刚创建的影片剪辑拖入到舞台,

4. 选中这个MC,绑定代码:

onClipEvent (load) { 
   t = 0; 
   a = 1; 
   v0 = 10; 
} 

onClipEvent (enterFrame) { 
   _y = (_y + ((a * t) - v0));//不难看出,随着(a*t)的增加,_y的值也不断增加 
   t++; 
}

效果图:

源文件下载

三、斜抛运动:

onClipEvent (load) { 
   t = 0; 
   a = 1; 
   v0 = 10; 
} 
onClipEvent (enterFrame) { 
   _x = (_x + v0); 
   _y = (_y + ((a * t) - v0));//按位运算,前面讲过了滴:) 
   t++; 
}

效果图

源文件下载

四、平抛

onClipEvent (load) { 
   t = 0; 
   a = 1; 
   v0 = 10; 
} 
onClipEvent (enterFrame) { 
   _x = (_x + v0); 
   _y = (_y + (a * t)); 
   t++; 
}
作者:cuiyysw 来源:blue1000.com
■此文章最新评论(不超过十条)
■评论此文章( 有问题请去夜鹰论坛发帖 )
共有评论: 查看全部评论 姓名:
【 声明 】 您所发表的言论将被众多网友阅读,因此,您所发表的言论应不违反中国法律,不违背一般的道德原则,否则,您必须对您的不当言论引发的一切不良后果负责;此外,我们的管理员有权删除您发表的不当言论,谢谢合作!
点击排行

相关教程

本类导航