【问题标题】:Stage scaling affecting AS3影响 AS3 的舞台缩放
【发布时间】:2013-11-25 10:42:52
【问题描述】:

我有一些代码可以控制在拖动 mouseX 轴时生成大量图像和 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);
}

【问题讨论】:

    标签: mouse frame scale stage


    【解决方案1】:

    通过改变

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

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

    我似乎解决了这个问题,一切又顺利进行了。

    【讨论】:

      猜你喜欢
      • 2014-07-12
      • 1970-01-01
      • 2014-01-04
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 2020-11-02
      • 1970-01-01
      相关资源
      最近更新 更多