[1b]4. 弹性[/1b]
弹性,一般是指物体接触到到某个边界,所进行的回弹,在FLASH中,我们需要做的是设置好边界,以及物体回弹的方向。那么如何确定它回弹的方向呢,我们设定一个边界,当小球超出边界时小球回弹,也就是方向改变了。以x轴为例应为:
[color="#ff0000"]vx*=-1;[/color]
实际上你可能发现它实际上就是 vx=-vx;
代码:
//设定边界
top=0;
left=0;
right=400;
bottom=300;
vx=10;
vy=10;
onEnterFram=function(){
my_mc._x+=vx;
my_mc._y+=vy;
//下面代码检测小球是否到达边界,如果已到边界,重设小球的正确做坐,并使其回弹,
if(my_mc._x+my_mc._width/2>right){
my_mc._x=right-my_mc._width/2;
vx*=-1;
}
if(my_mc._x-my_mc._width/2bottom){
my_mc._y=bottom-my_mc._height/2;
vy*=-1;
}
}
演示:
通过演示我们发现小球在碰到边界会不断的回弹。
[1b]
[color="#ff0000"]*注意[/color]
[/1b]:上面代码中的my_mc._x,my_mc._y的坐标都是指my_mc的中心点,也就是说my_mc的注册点在中心,如果你在制作过程中发现与本演示不同,那一定是你的my_mc注册点没有在中心上。
[1b]弹性中的能量损失[/1b]
在上面的例子,小球在回弹时我们设定当碰到边界时直接回弹,也就是vx*=-1;并没有能量的损失,但在现实生活中,小球在回弹时要有一定的能量损失,其中还要有重力加速度的影响,通过上面的例子我们可以得出结论,当回弹速度设为1时无能量损失,其中的负号只是代表方向,当小于1时会产生能量损失,也就是我们通常说的摩擦,如:vx*=-0.8;同时不要忘了在现实生活小球还会受重力加速度的影响。
代码:
top=0;
left=0;
right=400;
bottom=300;
//设定重力加速度变量garv
garv=.5;
vx = 10;
vy = 10;
onEnterFrame = function () {
//y轴方向的加速度
vy+=garv;
my_mc._x += vx;
my_mc._y += vy;
if(my_mc._x+my_mc._width/2>right){
my_mc._x=right-my_mc._width/2;
vx*=-0.8;
}
if(my_mc._x-my_mc._width/2bottom){
my_mc._y=bottom-my_mc._height/2;
本文转自:http://www.5uflash.com/flashjiaocheng/Flashyingyongkaifa/217.html
弹性,一般是指物体接触到到某个边界,所进行的回弹,在FLASH中,我们需要做的是设置好边界,以及物体回弹的方向。那么如何确定它回弹的方向呢,我们设定一个边界,当小球超出边界时小球回弹,也就是方向改变了。以x轴为例应为:
[color="#ff0000"]vx*=-1;[/color]
实际上你可能发现它实际上就是 vx=-vx;
代码:
//设定边界
top=0;
left=0;
right=400;
bottom=300;
vx=10;
vy=10;
onEnterFram=function(){
my_mc._x+=vx;
my_mc._y+=vy;
//下面代码检测小球是否到达边界,如果已到边界,重设小球的正确做坐,并使其回弹,
if(my_mc._x+my_mc._width/2>right){
my_mc._x=right-my_mc._width/2;
vx*=-1;
}
if(my_mc._x-my_mc._width/2bottom){
my_mc._y=bottom-my_mc._height/2;
vy*=-1;
}
}
演示:
通过演示我们发现小球在碰到边界会不断的回弹。
[1b]
[color="#ff0000"]*注意[/color]
[/1b]:上面代码中的my_mc._x,my_mc._y的坐标都是指my_mc的中心点,也就是说my_mc的注册点在中心,如果你在制作过程中发现与本演示不同,那一定是你的my_mc注册点没有在中心上。
[1b]弹性中的能量损失[/1b]
在上面的例子,小球在回弹时我们设定当碰到边界时直接回弹,也就是vx*=-1;并没有能量的损失,但在现实生活中,小球在回弹时要有一定的能量损失,其中还要有重力加速度的影响,通过上面的例子我们可以得出结论,当回弹速度设为1时无能量损失,其中的负号只是代表方向,当小于1时会产生能量损失,也就是我们通常说的摩擦,如:vx*=-0.8;同时不要忘了在现实生活小球还会受重力加速度的影响。
代码:
top=0;
left=0;
right=400;
bottom=300;
//设定重力加速度变量garv
garv=.5;
vx = 10;
vy = 10;
onEnterFrame = function () {
//y轴方向的加速度
vy+=garv;
my_mc._x += vx;
my_mc._y += vy;
if(my_mc._x+my_mc._width/2>right){
my_mc._x=right-my_mc._width/2;
vx*=-0.8;
}
if(my_mc._x-my_mc._width/2bottom){
my_mc._y=bottom-my_mc._height/2;
本文转自:http://www.5uflash.com/flashjiaocheng/Flashyingyongkaifa/217.html