永发信息网

如何制作不停运动的小球flash

答案:1  悬赏:10  手机版
解决时间 2021-05-05 06:12

高手帮忙,谢谢:普通运动我会做。

1、是FLASH,小球类[圆的]。

2、随机运动,一个小球碰另个小球,运动方向都发生改变。

要多少分给多,上限我的最高分。

 

最佳答案


代码如下:


//把你舞台上的MC实例名放入数组,测试
var ballA:Array = [ball1, ball2, ball3, ball4, ball5];
//随机初始化每个MC的运动速度和方向
for (var i = 0; i<ballA.length; i++) {
ballA[i].dx = 5*rand1_1();
ballA[i].dy = 5*rand1_1();
ballA[i].N=i;
}
//随机产生1或-1
function rand1_1():Number {
return random(2) ? -1 : 1;
}
Stage.scaleMode = "noScale";
Stage.align = "TL";
var sw:Number = Stage.width;
var sh:Number = Stage.height;
var stageListener:Object = new Object();
//舞台大小改变时,重置sw、sh
stageListener.onResize = function() {
sw = Stage.width;
sh = Stage.height;
};
Stage.addListener(stageListener);
onEnterFrame = function () {
for (var i = 0; i<ballA.length; i++) {
  //如果到了边界,就反射
  if ((ballA[i]._x<ballA[i]._width/2 && ballA[i].dx<0) or (ballA[i]._x>sw-ballA[i]._width/2 && ballA[i].dx>0)) {
   ballA[i].dx *= -1;
  }
  if ((ballA[i]._y<ballA[i]._height/2 && ballA[i].dy<0) or (ballA[i]._y>sh-ballA[i]._height/2 && ballA[i].dy>0)) {
   ballA[i].dy *= -1;
  }
  //检测所有MC之间是否有碰撞,有就根据情况改变“增量”方向
  for (var j = i+1; j<ballA.length; j++) {
   if (myHitTest(ballA[i],ballA[j])) {
   //if (ballA[i].hitTest(ballA[j])) {
    mc12(ballA[i], ballA[j]);
    ballA[i]._x += ballA[i].dx;
    ballA[j]._x += ballA[j].dx;
    ballA[i]._y += ballA[i].dy;
    ballA[j]._y += ballA[j].dy;
   }
  }
  //移动一个“增量”    
  ballA[i]._x += ballA[i].dx;
  ballA[i]._y += ballA[i].dy;
}
updateAfterEvent();
};
//碰撞函数,根据两球碰撞方向和自身运动方向合成新的增量值
function mc12(mc1:MovieClip, mc2:MovieClip) {
//碰撞角
var ang:Number = Math.atan2(mc2._y-mc1._y, mc2._x-mc1._x);
//运动角
var ang1:Number = Math.atan2(mc1.dy, mc1.dx);
var ang2:Number = Math.atan2(mc2.dy, mc2.dx);
//反射角
var _ang1:Number = 2*ang-ang1-Math.PI;
var _ang2:Number = 2*ang-ang2-Math.PI;
//运动矢量
var r1:Number=Math.sqrt(mc1.dx*mc1.dx+mc1.dy*mc1.dy);
var r2:Number=Math.sqrt(mc2.dx*mc2.dx+mc2.dy*mc2.dy);
//碰撞矢量
var a1:Number = (mc1.dy/Math.sin(ang1))*Math.cos(ang-ang1);
var a2:Number = (mc2.dy/Math.sin(ang2))*Math.cos(ang-ang2);
//碰撞矢量合成
var dx1:Number = a1*Math.cos(ang)+a2*Math.cos(ang);
var dy1:Number = a1*Math.sin(ang)+a2*Math.sin(ang);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
爱是一件简单的事吗?
起了腓子怎么好的快啊
七夕,猪八戒会和嫦娥过吗?
体寒,吃什么可以让身体暖和?
帮我出 出主意。我很纠结啊、
为什么我的MP5的图片看不起来?
找 植物大战僵尸 视频 能过100关以上的赐教
我以前3区的·但转了到9区后我以前的牛图不见
帮我看一下是不是得了甲型H1N1?
物体能被摔破与什么有关
未来做什么行业最有潜力
关羽是哪里人
八上物理电路选择题
单身好?还是有对象好?
长治交通运输执法局城区分局我想知道这个在什
推荐资讯
在凤岗镇在那里有NOKIA N95手机买,要正版的
六道写的坏蛋2现在写到那了还有没有那写的坏
为什么我的龙之谷打不开?老实出现出错
比亚迪F3在熄火之后刹车灯为什么还在亮?
花草茶喝多久有效果?
怎么在手机上下载电子书
奥运金牌用英语怎么说,桌签牌用英语怎么说
j1协议在哪里?在线等、急
‘情’和‘爱’有什么具体的区别吗?
洛奇秘密实验的真相的收复光之剑高级怎么打
现在的YY该如何玩啊 各位高手说下
找个我爱的女孩子呢还是找个爱我的女孩子,那
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?