flash as3物理弹簧问题
我想做一个as3 spring程序,效果如下: 经过一些研究并查看一些示例,我的程序如下:flash as3物理弹簧问题,flash,actionscript-3,spring,flash-cs4,physics,Flash,Actionscript 3,Spring,Flash Cs4,Physics,我想做一个as3 spring程序,效果如下: 经过一些研究并查看一些示例,我的程序如下: public class testing_2 extends MovieClip { //--------------declare variables private var xdif:Number; private var ydif:Number; private var xvel:Number = 0; private var yvel:Number = 0
public class testing_2 extends MovieClip
{
//--------------declare variables
private var xdif:Number;
private var ydif:Number;
private var xvel:Number = 0;
private var yvel:Number = 0;
private var totalNum:Number = 3;
private var d:Number = 20;
private var springArray:Array = [];
public function testing_2()
{
//-------------init stuffs
init_mc();
init_event();
}
private function init_mc()
{
for (var i:Number = 0; i < totalNum; i++)
{
var mc:MovieClip = new box() ;
mc.num = i;
springArray.push(mc);
addChild(mc);
//mc.x = stage.stageWidth/2;
//mc.y = stage.stageHeight/2 + i*d;
}
}
private function init_event()
{
this.addEventListener(Event.ENTER_FRAME, spring);
}
//-------------own functions
function spring(e)
{
for (var i:Number = totalNum-1; i >= 0; i--){
xdif = mouseX - springArray[i].x;
ydif = mouseY - springArray[i].y;
xvel += xdif * (0.4);
yvel += ydif * (0.4);
xvel *= (0.8);
yvel *= (0.8);
springArray[i].x += xvel ;
springArray[i].y += yvel ;
}
}
public class testing_2扩展了MovieClip
{
//--------------声明变量
私有变量xdif:编号;
私有变量ydif:编号;
私有变量xvel:Number=0;
私有变量yvel:Number=0;
私有变量totalNum:Number=3;
私有变量d:数字=20;
私有变量springArray:Array=[];
公共功能测试_2()
{
//-------------初始化文件
init_mc();
初始化事件();
}
私有函数init_mc()
{
对于(变量i:Number=0;i=0;i--){
xdif=mouseX-springArray[i].x;
ydif=mouseY-springArray[i].y;
xvel+=xdif*(0.4);
yvel+=ydif*(0.4);
xvel*=(0.8);
yvel*=(0.8);
springArray[i].x+=xvel;
springArray[i].y+=yvel;
}
}
这不是一个成功的程序,因为球不能以一定的距离分开,而且当球滚动时,它们处于相同的圆形路径中,无法达到网站链接的效果;
ydif=mouseY-springArray[i].y;但我无法指出问题所在
有人能帮忙吗?非常感谢。在您的代码中,每个球都有相同的行为,因为for循环中的两次迭代之间没有变化。您应该尝试第一个球指向鼠标,第二个球指向第一个,第三个球指向第二个
for (var i:Number = 0; i < totalNum; i++){
if (i == 0)
{
xdif = mouseX - springArray[i].x;
ydif = mouseY - springArray[i].y;
} else
{
xdif = springArray[i-1].x - springArray[i].x;
ydif = springArray[i-1].y - springArray[i].y;
}
...
for(变量i:Number=0;i