2013-11-25 4 views
0

У меня есть код, который управляет серьезными изображениями для создания и 360 вращения при перетаскивании оси мыши. Все это отлично работало с кодом, который я использовал.Масштабирование сцены, влияющее на 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; 

Я, кажется, решаемой проблемы и все идет гладко снова.

Смежные вопросы