// ActionScript file
package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;

    [SWF(width=640, height=480, backgroundColor=0xf0f0e0, frameRate=30)]
    public class Chap03_Test extends Sprite
    {
        private var m_cx:Number = 320;
        private var m_cy:Number = 240;
        private var m_rx:Number = 50;
        private var m_ry:Number = 100;
        private var m_radius:Number = 0;
        private var m_speed:Number = 0.1;

        private var m_ball:Ball;
        private var m_line:Sprite;
        private var m_tf:TextField;

        public function Chap03_Test():void
        {
            init();
        }

        private function init():void
        {
            m_ball = new Ball();
            m_ball.x = m_cx + Math.cos( m_radius ) * m_rx;
            m_ball.y = m_cy + Math.sin( m_radius ) * m_ry;
            stage.addChild( m_ball );

            m_line = new Sprite();
            m_line.graphics.lineStyle( 1 );
            m_line.graphics.moveTo( m_ball.x, m_ball.y );
            m_line.graphics.lineTo( stage.mouseX, stage.mouseY );
            stage.addChild( m_line );

            m_tf = new TextField;
            m_tf.autoSize = TextFieldAutoSize.CENTER;
            stage.addChild( m_tf );

            stage.addEventListener( Event.ENTER_FRAME, onLoop );
        }

        private function onLoop( ev:Event ):void
        {
            m_ball.x = m_cx + Math.cos( m_radius ) * m_rx;
            m_ball.y = m_cy + Math.sin( m_radius ) * m_ry;
            m_radius += m_speed;

            m_line.graphics.clear();
            m_line.graphics.lineStyle( 1 );
            m_line.graphics.moveTo( m_ball.x, m_ball.y );
            m_line.graphics.lineTo( stage.mouseX, stage.mouseY );

            var dx:Number = stage.mouseX - m_ball.x;
            var dy:Number = stage.mouseY - m_ball.y;
            m_tf.text = Math.sqrt( dx*dx + dy*dy ).toString();
        }
    }

}