如果要做精确碰撞是很复杂的(例如同时撞到多个球),建议使用物理引擎,如box2d!
如果真的要自己写,原则上,就需要按每个小球逐步判断与其它小球间的碰撞,并且计算所有力的叠加!
但还有很多问题产生,例如单个小球逐个计算与其它小球的碰撞关系,如果有1000个小球,则每一个小球都需要计算与其之外的999个小球的碰撞关系,1000个球就需要计算1000*999次,显然这样是很低效的,因此需要有一种手段快速检索出有可能碰撞的小球集合而不是遍历全部,这只是众多子问题中的其中之一,当然还有很多很棘手的问题!
这个简单嘛,碰撞之后速度反向,但是经过一个时间间隔的运动后还在碰撞检测的范围内。所以一般来说,检测到碰撞之后我们要把物体放到碰撞检测的边缘,再反向。即:在bly=-bly;之前加上:this.y=stage.stageHeight-18,但这就意味着你必须分开写左右上下的碰撞。
到adobe官网去下载示例 上面就有小球碰撞的源码