我的代码有问题。我使用AS3进行了基本缩放,使用two fingers对其进行了缩放。但是我有一个麻烦。

例如,我需要在2中放大停止(正常大小是1),然后,我需要将max缩小到1。这是我的代码,但是如果我快速缩放,则缩放将超过2

我需要将缩放限制在12之间。

Multitouch.inputMode = MultitouchInputMode.GESTURE;

escenario.addEventListener(TransformGestureEvent.GESTURE_PAN, fl_PanHandler);

stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM, fl_ZoomHandler);

function fl_PanHandler(event:TransformGestureEvent):void
{

    event.currentTarget.x +=  event.offsetX;
    event.currentTarget.y +=  event.offsetY;

}

function fl_ZoomHandler(event:TransformGestureEvent):void
{

    if (event.scaleX && event.scaleY >= 1 && escenario.scaleX && escenario.scaleY <= 2)
    {

        escenario.scaleX *=  event.scaleX;
        escenario.scaleY *=  event.scaleY;
        trace(escenario.scaleX);

    }

}

最佳答案

由于您执行的是次数/等于(* =),因此您的值很容易超过if语句中的阈值2,因为您需要在if语句之后乘以该值。您可以这样做:

function fl_ZoomHandler(event:TransformGestureEvent):void {
    var scale:Number = escenario.scaleX * event.scaleX; //the proposed new scale amount

    //you set both the scaleX and scaleY in one like below:
    escenario.scaleY = escenario.scaleX = Math.min(Math.max(1,scale), 2);

    //^^^^  inside the line above,
       //Math.max(1, scale) will return whatever is bigger, 1 or the proposed new scale.
       //Then Math.min(..., 2) will then take whatever is smaller, 2 or the result of the previous Math.max

    trace(escenario.scaleX);
}

关于android - 适用于iOS编程的AS3的放大/缩小限制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34596182/

10-10 19:54