Сценическое масштабирование, влияющее на AS3

У меня есть код, который управляет серьезными изображениями для создания и 360 вращением при перетаскивании оси мыши. Все это отлично работало с кодом, который я использовал.

С тех пор я должен был разработать для разных платформ и увеличить размер сцены, я сделал это по шкале для установки флажка в настройках документа.

Пока мышь находится в действии, спин работает отлично, перетаскивая изображения по назначению, но когда вы отпускаете и начинаете перетаскивать снова, он не запоминает последний кадр и не перескакивает в другой кадр, прежде чем снова перетащить штраф? Почему он прыгает так, когда все, что я сделал, это изменить масштаб всего?

см. код для использования

//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);
}
1 ответ

Путем изменения

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

в

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

Кажется, я решил проблему, и все прошло гладко.

licensed under cc by-sa 3.0 with attribution.