protected override void OnExit()
 {
     while (circles.Count > 0)
     {
         PhysicsCircleSprite sprite = circles[0];
         circles.RemoveAt(0);
         sprite.DestroyBody(Window.PhysicsWorld);
         RemoveChild(sprite);
         circleFactory.ReturnObject(sprite);
     }
 }
        //public

        //private
        protected override void OnEnter()
        {
            borders[0]          = createBorder(Window.Width, 1.0d);
            borders[0].Position = new Vector2(PhysicsEngine.ToMeters(Window.Width / 2.0d), PhysicsEngine.ToMeters(-0.5d));
            borders[1]          = createBorder(Window.Width, 1.0d);
            borders[1].Position = new Vector2(PhysicsEngine.ToMeters(Window.Width / 2.0d), PhysicsEngine.ToMeters(Window.Height + 0.5d));
            borders[2]          = createBorder(1.0d, Window.Height);
            borders[2].Position = new Vector2(PhysicsEngine.ToMeters(-0.5d), PhysicsEngine.ToMeters(Window.Height / 2.0d));
            borders[3]          = createBorder(1.0d, Window.Height);
            borders[3].Position = new Vector2(PhysicsEngine.ToMeters(Window.Width + 0.5d), PhysicsEngine.ToMeters(Window.Height / 2.0d));

            while (circleFactory.NumFreeInstances > 0)
            {
                PhysicsCircleSprite sprite = circleFactory.GetObject();
                circles.Add(sprite);
                AddChild(sprite);
                sprite.CreateBody(Window.PhysicsWorld);
            }
        }