Мда) Видимо мои познания еще малы, что бы разобраться с Вашим решением, Wolsh.
Я пока пишу скрипты в кадре, а работу с файлами и классами (если правильно понял Ваш ответ) еще не изучал.
Все же посидев вечерок избавился от первых двух проблем таким способом

Код AS3:
var m_roll_fon:M_roll_fon= new M_roll_fon();
addChild(m_roll_fon);
var m_roll:M_roll= new M_roll();
addChild(m_roll);
var temp_roll:int=0;
m_roll_fon.addEventListener(MouseEvent.MOUSE_MOVE, RotationCircle);
m_roll.addEventListener(MouseEvent.MOUSE_MOVE, RotationCircle);
function RotationCircle(e:MouseEvent):void
{ if(temp_roll==1)
{
var X:Number = m_roll.x;
var Y:Number = m_roll.y;
var mX:Number = mouseX;
var mY:Number = mouseY;
var AB:Number;
var OB:Number;
var sina:Number;
var a:Number;
AB = Math.abs(X - mX);
OB = Math.abs(Math.sqrt(Math.pow(X - mX ,2) + Math.pow(Y - mY ,2)));
sina = AB / OB;
a = Math.asin(sina) * 180 / Math.PI;
if (Y >= mY && X <= mX)
{
m_roll.rotation = a;
} else
if (Y < mY && X <= mX)
{
m_roll.rotation = 180 - a;
} else
if (Y >= mY && X > mX)
{
m_roll.rotation = 360 - a;
} else
if (Y < mY && X > mX)
{
m_roll.rotation = 180 + a;
}
}
}
m_roll.addEventListener(MouseEvent.MOUSE_DOWN,RotationCircleDown);
function RotationCircleDown(e:MouseEvent):void
{temp_roll=1;
m_roll.addEventListener(MouseEvent.MOUSE_MOVE, RotationCircle);
m_roll_fon.addEventListener(MouseEvent.MOUSE_MOVE, RotationCircle);}
m_roll_fon.addEventListener(MouseEvent.MOUSE_UP,RotationCircleUp);
m_roll.addEventListener(MouseEvent.MOUSE_UP,RotationCircleUp);
function RotationCircleUp(e:MouseEvent):void
{temp_roll=1;
m_roll.removeEventListener(MouseEvent.MOUSE_MOVE, RotationCircle);
m_roll_fon.removeEventListener(MouseEvent.MOUSE_MOVE, RotationCircle);}
где m_roll_fon область всей сцены.
Может как-нибудь можно избавиться от третей проблемки в моем случае? или всеже придется изучить создание файлов и классов?