2013-11-25 198 views
0

我有一些代碼控制一個嚴重的圖像產生和360旋轉拖動mouseX軸時。這一切都適用於我用過的代碼。舞臺縮放影響AS3

因爲我不得不針對不同的平臺進行設計,並且在文檔設置中放大了階段的大小,我按比例調整了階段複選框。

當鼠標向下時,旋轉按預期方式精細地拖動圖像,但是當您釋放並開始再次拖動時,它不會記住最後一幀,並在再次拖動細線之前跳到另一幀。當我所做的一切都改變了一切的規模時,爲什麼它會像這樣跳躍?

請參閱代碼中使用

//ROTATION OF CONTROL BODY X 
spinX_mc.stop(); 

var spinX_mc:MovieClip; 
var offsetFrame:int = spinX_mc.currentFrame; 
var offsetX:Number = 0; 
var percent:Number = 0; 

//Listeners 
spinX_mc.addEventListener(MouseEvent.MOUSE_DOWN, startDragging); 
spinX_mc.addEventListener(MouseEvent.MOUSE_UP, stopDragging); 

function startDragging(e:MouseEvent):void 
{ 

    // start listening for mouse movement 
    spinX_mc.addEventListener(MouseEvent.MOUSE_MOVE,drag); 
    offsetX = stage.mouseX; 
} 

function stopDragging(e:MouseEvent):void 
{ 
    ("stopDrag") 
    // STOP listening for mouse movement 
    spinX_mc.removeEventListener(MouseEvent.MOUSE_MOVE,drag); 
    // save the current frame number; 

    offsetFrame = spinX_mc.currentFrame; 

    removeEventListener(MouseEvent.MOUSE_DOWN, startDragging); 
} 

// this function is called continuously while the mouse is being dragged 

function drag(e:MouseEvent):void 
{ 
    trace ("Drag") 
    // work out how far the mouse has been dragged, relative to the width of the spinX_mc 
    // value between -1 and +1 
    percent = (mouseX - offsetX)/spinX_mc.width; 
    // trace(percent); 

    // work out which frame to go to. offsetFrame is the frame we started from 
    var frame:int = Math.round(percent * spinX_mc.totalFrames) + offsetFrame; 

    // reset when hitting the END of the spinX_mc timeline 
    while (frame > spinX_mc.totalFrames) 
    { 
     frame -= spinX_mc.totalFrames; 
    } 
    // reset when hitting the START of the spinX_mc timeline 
    while (frame <= 0) 
    { 
     frame += spinX_mc.totalFrames; 
    } 

    // go to the correct frame 
    spinX_mc.gotoAndStop(frame); 
} 

回答

0

通過改變

spinX_mc.addEventListener(MouseEvent.MOUSE_MOVE,drag); 
offsetX = stage.mouseX; 

spinX_mc.addEventListener(MouseEvent.MOUSE_MOVE,drag); 
offsetX = mouseX; 

我似乎解決了這個問題,一切順利再次運行。