flash小球碰撞
发布时间:2020-12-15 07:03:23 所属栏目:百科 来源:网络整理
导读:先新建一个影片剪辑,名称为ball,然后在第一帧的位置加入如下的动作即可 fscommand("fullscreen","true") number_of_balls = 4;//可能会引起问题发生的!建议这里最大数为3。我提供的演示有问题了。speed_limit = 2;//速度的设置。for (x=1; x=number_of_ba
先新建一个影片剪辑,名称为ball,然后在第一帧的位置加入如下的动作即可
fscommand("fullscreen","true") number_of_balls = 4;//可能会引起问题发生的!建议这里最大数为3。我提供的演示有问题了。 speed_limit = 2;//速度的设置。 for (x=1; x<=number_of_balls; x++) { //ball = attachMovie("ball","ball_"+x,_root.getNextHighestDepth(),{_x:Math.random()*650-50,_y:Math.random()*350-50}); //每个球点击事件,打开网页 if(x==1){ ball = attachMovie("ball",{_x:50,_y:50}); ball.onPress=function(){ getURL("http://www.sina.com.cn","_blank"); } } if(x==2){ ball = attachMovie("ball",{_x:600,_y:50}); ball.onPress=function(){ getURL("http://www.csdn.net/?ref=toolbar","_blank"); } } if(x==3){ ball = attachMovie("ball",_y:350}); ball.onPress=function(){ getURL("http://www.baidu.com","_blank"); } } if(x==4){ ball = attachMovie("ball",_y:350}); ball.onPress=function(){ getURL("http://www.weather.com.cn/html/weather/101210101.shtml","_blank"); } } ball.mass = 1; ball.xspeed = Math.random()*8-4; ball.yspeed = Math.random()*8-4; ball.onEnterFrame = function() { if (this._x<41) { this._x = 41; this.xspeed *= -1; } else if (this._x>727) { this._x = 727; this.xspeed *= -1; } if (this._y<41) { this._y = 41; this.yspeed *= -1; } else if (this._y>391) { this._y = 391; this.yspeed *= -1; } if (this.xspeed>speed_limit) { this.xspeed = speed_limit; } if (this.xspeed<speed_limit*-1) { this.xspeed = speed_limit*-1; } if (this.yspeed>speed_limit) { this.yspeed = speed_limit; } if (this.yspeed<speed_limit*-1) { this.yspeed = speed_limit*-1; } this._x += this.xspeed; this._y += this.yspeed; }; } //管理反弹 function manage_bounce(ball,ball2) { dx = ball._x-ball2._x; dy = ball._y-ball2._y; //两球角度方向 collisionision_angle = Math.atan2(dy,dx); //速度真实值 magnitude_1 = Math.sqrt(ball.xspeed*ball.xspeed+ball.yspeed*ball.yspeed); magnitude_2 = Math.sqrt(ball2.xspeed*ball2.xspeed+ball2.yspeed*ball2.yspeed); //速度方向 direction_1 = Math.atan2(ball.yspeed,ball.xspeed); direction_2 = Math.atan2(ball2.yspeed,ball2.xspeed); new_xspeed_1 = magnitude_1*Math.cos(direction_1-collisionision_angle); new_yspeed_1 = magnitude_1*Math.sin(direction_1-collisionision_angle); new_xspeed_2 = magnitude_2*Math.cos(direction_2-collisionision_angle); new_yspeed_2 = magnitude_2*Math.sin(direction_2-collisionision_angle); final_xspeed_1 = new_xspeed_2; final_xspeed_2 = new_xspeed_1; final_yspeed_1 = new_yspeed_1; final_yspeed_2 = new_yspeed_2; ball.xspeed = Math.cos(collisionision_angle)*final_xspeed_1+Math.cos(collisionision_angle+Math.PI/2)*final_yspeed_1; ball.yspeed = Math.sin(collisionision_angle)*final_xspeed_1+Math.sin(collisionision_angle+Math.PI/2)*final_yspeed_1; ball2.xspeed = Math.cos(collisionision_angle)*final_xspeed_2+Math.cos(collisionision_angle+Math.PI/2)*final_yspeed_2; ball2.yspeed = Math.sin(collisionision_angle)*final_xspeed_2+Math.sin(collisionision_angle+Math.PI/2)*final_yspeed_2; //修复2球粘附的bug的代码 ball._x += ball.xspeed; ball._y += ball.yspeed; ball2._x += ball2.xspeed; ball2._y += ball2.yspeed; } _root.onEnterFrame = function() { for (x=1; x<number_of_balls; x++) { for (y=x+1; y<=number_of_balls; y++) { distance_x = Math.abs(_root["ball_"+x]._x-_root["ball_"+y]._x); distance_y = Math.abs(_root["ball_"+x]._y-_root["ball_"+y]._y); distance = Math.sqrt(distance_x*distance_x+distance_y*distance_y); if (distance<=82) { manage_bounce(_root["ball_"+x],_root["ball_"+y]); } } } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |