package { import flash.display.Sprite; import flash.events.Event; public class Billiard1 extends Sprite { private var ball0:Ball; private var ball1:Ball; private var bounce:Number = -0.6; public function Billiard1() { init(); } private function init():void { ball0=new Ball(40); addChild(ball0); ball1=new Ball(20,0x0000ff); addChild(ball1); ReStart(); } private function ReStart():void{ ball0.mass=2; ball0.x=50; ball0.y=stage.stageHeight/2; ball0.vx=5; ball1.mass=1; ball1.x=300; ball1.y=stage.stageHeight/2; ball1.vx=-5; addEventListener(Event.ENTER_FRAME,EnterFrameHandler); } private function EnterFrameHandler(event:Event):void { ball0.x+=ball0.vx; ball1.x+=ball1.vx; var dist:Number=ball1.x-ball0.x; //如果撞到了 if (Math.abs(dist)=stage.stageWidth-ball0.radius || ball0.x<=ball0.radius){ ball0.x -= ball0.vx; ball0.vx *= bounce; } if (ball1.x >=stage.stageWidth-ball1.radius || ball1.x<=ball1.radius){ ball1.x -= ball1.vx; ball1.vx *= bounce; } trace(ball1.vx,ball0.vx); //如果二球都停了 if (Math.abs(ball1.vx)<=0.05 && Math.abs(ball0.vx)<=0.05){ removeEventListener(Event.ENTER_FRAME,EnterFrameHandler); ReStart(); } } } }