salve ragazzi... mi trovo ad affrontare un problema che da ieri non riesco a risolvere..

vorrei simulare il movimento di un disco da deejay che con la pressione del mouse sopra mi ruota a destra o sinistra in base a come sposto il mouse...

il risultato che sono riuscito ad ottenere per adesso è il seguente

risultato

solo che se giocate un pochino con la rotela per un po di secondi muovendovi velecomente e cliccando più volte su di essa..
inizia a ruotare senza controllo e dopo yun pò si blocca.

ho reciclato una funzione as2 trovata per il web alla quale era associata anche il drag and drop in posizioni x e y cosa che a me non serve visto che la rotella che vedete deve solo ruotare e non spostarsi su cordinate x e y.

poosto cmq il codice usato ma premetto che è un pò contorto da capire e sarei lieto di riscrivere la funzione perchè credo che si posssa ottenere lo stesso effetto con poche linee di codice.

Sapete aiutarmi
non so casomai utilizzando anche librerie esterne come la mc_tween o cosa simile per simulare il decelleramento al rilascio

grazie in anticipo
ecco il codice posizionato dentro mc objeto la rotella per intenderci
Codice PHP:
1;
inercia 5000;
inx _x;
iny _y;

_rotation;
min 1;
originx _x;
originy _y;

originr _rotation;
//friccion
1.2;
//inicializando
vr 0;
torque 0;
vx 0;
vy 0;


onEnterFrame = function () {
    if (
modo == 1) {
        
        if (
modo_time == 1) {
            
modo_time 0;
            
mxx _root._xmouse;
            
my _root._ymouse;
            
mx0 mxx;
            
my0 my;
            
dmx mxx-mx0;
            
dmy my-my0;
        } else {
            
mxx = (_root._xmouse+mxx)/2;
            
my = (_root._ymouse+my)/2;
            
dmx mxx-mx0;
            
dmy my-my0;
            
mx0 mxx;
            
my0 my;
        }
        
fx = (dmx-vx)*m;
        
fy = (dmy-vy)*m;
        
ldx mxx-inx;
        
ldy my-iny;
        if (
fx == 0) {
            
mlength ldx;
            
mforce fy;
            
torque mforce*mlength;
        } else if (
fy == 0) {
            
mlength ldy;
            
mforce fx;
            
torque = -(mforce)*mlength;
        } else {
            
fy/fx;
            
kx = (-(k)*k*ldx+k*ldy)/(-(k)*k-1);
            
ky k*(kx-ldx)+ldy;
            
mlength Math.sqrt(kx*kx+ky*ky);
            
mforce Math.sqrt(fx*fx+fy*fy);
            if (
fx*ky>0) {
                
torque = -(mforce)*mlength;
            } else {
                
torque mforce*mlength;
            }
        }
        
        
vx dmx;
        
vy dmy;
        
inx += vx;
        
iny += vy;
        
vr vr-torque/inercia;
        
ldx mxx-inx;
        
ldy my-iny;
        var 
cos;
        var 
sin;
        
cos Math.cos(vr/180*Math.PI);
        
sin Math.sin(vr/180*Math.PI);
        
addx ldx*cos+ldy*sin-ldx;
        
addy = -(ldx)*sin+ldy*cos-ldy;
        
inx += -(addx);
        
iny += -(addy);
    } else if (
modo == 2) {
        if (
modo_time == 1) {
            
modo_time 0;
            
vx vx-(addx);
            
vy vy-(addy);
        }
        
torque 0;
        
addx 0;
        
addy 0;
        
inx += vx;
        
iny += vy;
    }
    
-= vr;
    
//this._x = inx;  eliminate perchè non mi servivano
    //this._y = iny;
    
this._rotation r;
    
vx vx/b;
    
vy vy/b;
    
vr vr/b;
};
stop();