| AI教程 | Flash教程 | Fireworks教程 | Painter教程 | CDR教程 | CAD教程 | 3Dmax教程 | Maya教程 | 摄影技巧 | 广告文案 | LOGO案例 | PS教程

Flash 中的物理运动知识

  本教程节选自bit-101.com的未正式出版的新书making things move的新书介绍。主要内容是关于速度,加速度,弹性,缓动,摩擦力,重力等内容,这里没有非常详尽的内容,如果你想知道更详尽的内容,可以预定购买作者的新书making things move…相信一定是一本好书。引用keith peters的话就是你一定不要直接将代码粘过来用,只有理解了它的应用,才能运用自如。在本教程中本人对大部分内容进行了扩展讲解。希望对于初学或中级用户有所帮助,由于多年没有研究过数学物理,难免有误,希望多多指正。

  1.速度

  物体的运动都是沿着一定的方向,以恒定或是加速度的方式的运动的。在FALSH中要使物体以一个恒定的速度运动,就需要我们在每一帧不断的累加恒定的速度。这里面我们使用一种帧的循环的方式,来使物体不断的累加恒定的速度,以达到目的地。对于帧的循环方式大致上有三种,一种是使用代码onEnterFrame,一种是使用setInterval,另一种就是使用二到三帧来达到循环,如果你对这三种方式不太熟,请查看帮助来学习。

  在x轴方向的速度我们定义为vx,方向是向右,如果向左只要设为负值就可以。

  例如:

  代码:

vx=5;
onEnterFrame=function(){
  my_mc._x+=vx; //你也可以写成 my_mc._x=my_mc._x+vx;
}

  我们发现MC以恒定为5的速度向右移动,如果想要它向左移,只要将vx设为负值即可。

  通过上面的代码我们可以变通一下,如果想使小球上下移动,可以设置y轴上移动。代码如下:

vy=5;
onEnterFrame=function(){
  my_mc._y+=vy; //你也可以写成 my_mc._y=my_mc._y+vy;
}

  这里就不再做演示了。你可以自已试一下,看看你是否理解了。

  下面,我们再变通一下,在物理中有一个概念叫合速度,也就是x轴和y轴方向上的合速度。下面我们就来看一下,你可能已经知道了我在说什么。下面来看一下代码:最好你能在看下面代码之前自已写出来。

  代码:

vx=5;
vy=5;
onEnterFrame=function(){
  my_mc._x+=vx;
  my_mc._y+=vy;
}

  演示发现它已经沿着x,y合速度的方向移动了。是不是觉得很容易?这里我用的vx,vy都是5,也就是说合速度的方向是45度,当然你可以让vx,vy为不同的值,会有不同的速度也会沿不同的方向移动,如果反向,自然设置vx,vy为负值即可。

  上面的学习如果你认为很容易,那下面这段相信对你也不会有问题,刚才我们说到当设置vx,vy都相同时,它是以45度的合速度方向运动的。虽然设置不同的值可以代表不同的方向。但这种方法很不科学。我们可以动用我们的数学知识,来让物体按我们指定的特定的角度移动。这里需要复习一下我们的数学知识。

  (1)弧度:弧度=角度*PI/180;

  (2)角度:角度=弧度*180/PI;

  如果以指定的角度运动。那么这时的速度累加相当于沿着半径的方向。最终目的点是到达沿着半径方向的某一点。由于是合速度,我们需要定义一个统一个合速度以方便我们将x和y 轴上的速度分解出来为vx,vy。我们定义为speed;

  那么在x轴方向上的速度应为:

vx=Math.cos(radians)*speed;

  在y轴上的速度应为

vy=Math.sin(radians)*speed;

  代码:

speed=10;
angle=15;
radians=angle*Math.PI/180;
onEnterFrame=function(){
  vx=Math.cos(radians)*speed;
  vy=Math.sin(radians)*speed;
  my_mc._x+=vx;
  my_mc._y+=vy;
}

  通过演示你已经发现小球已经沿着15度的方向移动了。这样angle相当是一个接口参数,你可以任意的对小球的方向进行控制。

  2.加速度

  经过上面的学习已经对速度应用有了一些了解,下面我们看一下加速度。在物理中的加速度有一个公式如:vt=vo+at 在FLASH中应用基本上与些公式类似,只是省去了一些细节如时间。细分析时间并没有省去,而是通过时间轴来代替了。这里我们加速度为ax,那么在x轴上速度一般写成vx=vx+ax,简写成vx+=ax;我们把初速度设为0;

  代码:

ax=0.2;
vx=0;
onEnterframe=function(){
  vx+=ax;
  my_mc._x+=vx;
}

  那么同样道理,我们需要变通一下,另外个人的一点小观点,要善于提出问题,并努力想办法自已去解决,有助于你快速的学习进步。我们在y轴也加上加速度。

主题测试文章,只做测试使用。发布者:绘画吧,转转请注明出处:http://www.huitu8.com/shejijiaocheng/Flashjiaocheng/20190813/68293.html



联系我们

在线咨询:点击这里给我发消息

邮件: