package { import flash.display.Sprite; import flash.events.Event; import flash.events.TimerEvent; import flash.utils.Timer; [SWF(backgroundColor = '0xCCCCCC', width = '400', height = '300', frameRate="50")] public class Main extends Sprite { private const FPS: Number = stage.frameRate; private const BALL_BORDER_WIDTH: uint = 1; private const BALL_BORDER_COLOR: uint = 0x000000; private const BALL_COLOR: uint = 0x55AA55; private var v_width: Number = 400; // = stage.width private var v_height: Number = 300; // = stage.height private var v_ball_r: Number = 8; private var v_ball_x: Number = v_width/2; private var v_ball_y: Number = v_height/2; private var v_ball_vx: Number = (Math.random()<0.5?1:-1)*( 50 + Math.random()*100); private var v_ball_vy: Number = (Math.random()<0.5?1:-1)*(100 + Math.random()* 50); private var v_ball: Sprite; public function Main() { v_ball = new Sprite(); v_ball.graphics.lineStyle(BALL_BORDER_WIDTH, BALL_BORDER_COLOR); v_ball.graphics.beginFill(BALL_COLOR); v_ball.graphics.drawCircle(0, 0, v_ball_r); v_ball.width = v_ball.height = 2*v_ball_r; addChild( v_ball ); m_draw(); this.addEventListener(Event.ENTER_FRAME, o_redraw); } private function m_draw(): void { v_ball.x = v_ball_x; v_ball.y = v_ball_y; } private function o_redraw(p_event: Event): void { // collision detection if (v_ball_x <= v_ball_r || v_ball_x >= v_width - v_ball_r) v_ball_vx = -v_ball_vx; if (v_ball_y <= v_ball_r || v_ball_y >= v_height - v_ball_r) v_ball_vy = -v_ball_vy; // move ball v_ball_x += v_ball_vx/FPS; v_ball_y += v_ball_vy/FPS; //draw ball m_draw(); } } }