当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > Flash教程:用AS打造小球自由运动和碰撞检测的动画
Flash动画制作 中的 Flash教程:用AS打造小球自由运动和碰撞检测的动画
利用flash Actionscript对小球运动进行管理,并且实现对碰撞的检测的实例代码。
友情提示:教程的最后提供源文件下载
启动Flash 8,修改文档属性如下图。

接着建立影片剪辑,设置如下。
看不到动画效果的朋友请去这里观看:http://bbs.ruanchen.com/"gadspro">
然后回到主场景中,在第一帧输入下面代码:
| number_of_balls = 6;//可能会引起问题发生的!建议这里最大数为3。我提供的演示有问题了。 speed_limit = 10;//速度的设置。 for (x=1; x<=number_of_balls; x++) { ball = attachMovie("ball", "ball_"+x, _root.getNextHighestDepth(), {_x:Math.random()*400-50, _y:Math.random()*300-50}); ball.collision = 0; ball.mass = 1; ball.xspeed = Math.random()*8-4; ball.yspeed = Math.random()*8-4; ball.onEnterFrame = function() { if (this._x<15) { this._x = 15; this.xspeed *= -1; } else if (this._x>485) { this._x = 485; this.xspeed *= -1; } if (this._y<15) { this._y = 15; this.yspeed *= -1; } else if (this._y>385) { this._y = 385; this.yspeed *= -1; } if (this.xspeed>speed_limit) { this.xspeed = speed_limit; } if (this.xspeed } if (this.yspeed>speed_limit) { this.yspeed = speed_limit; } if (this.yspeed } 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 = ((ball.mass-ball2.mass)*new_xspeed_1+(ball2.mass+ball2.mass)*new_xspeed_2)/(ball.mass+ball2.mass); final_xspeed_2 = ((ball.mass+ball.mass)*new_xspeed_1+(ball2.mass-ball.mass)*new_xspeed_2)/(ball.mass+ball2.mass); 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; } _root.onEnterFrame = function() { for (x=1; x |