从手势保持率角度看As3捏缩放图片

我正在使用下面的代码从手势点进行放大/缩小+平移,非常适合同时使用X / Y缩放手势,但是如果仅执行X或仅执行Y操作,它将失去比例缩放。

这只是一个MC“ largeImageContainer”,可以轻松通过动画复制“触摸”和“手势”上的问题。

任何帮助将不胜感激;)

import flash.events.TransformGestureEvent;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
import fl.motion.MatrixTransformer;

Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener(TransformGestureEvent.GESTURE_zoom,onzoom);
function onzoom(event: TransformGestureEvent): void {
    //trace(e.localX);
    var locX: Number = event.localX;
    var locY: Number = event.localY;
    var stX: Number = event.stageX;
    var stY: Number = event.stageY;
    var prevScaleX: Number = largeImageContainer.scaleX;
    var prevScaleY: Number = largeImageContainer.scaleY;
    var mat: Matrix;
    var externalPoint = new Point(stX,stY);
    var internalPoint = new Point(locX,locY);

    largeImageContainer.scaleX *= event.scaleX;
    largeImageContainer.scaleY *= event.scaleY;

    if (event.scaleX > 1 && largeImageContainer.scaleX > 6) {
        largeImageContainer.scaleX = prevScaleX;
        largeImageContainer.scaleY = prevScaleY;
    }

    if (event.scaleY > 1 && largeImageContainer.scaleY > 6) {
        largeImageContainer.scaleX = prevScaleX;
        largeImageContainer.scaleY = prevScaleY;
    }

    if (event.scaleX < 1.1 && largeImageContainer.scaleX < 1) {
        largeImageContainer.scaleX = prevScaleX;
        largeImageContainer.scaleY = prevScaleY;
    }

    if (event.scaleY < 1.1 && largeImageContainer.scaleY < 1) {
        largeImageContainer.scaleX = prevScaleX;
        largeImageContainer.scaleY = prevScaleY;

    }
    mat = largeImageContainer.transform.matrix.clone();
    MatrixTransformer.matchInternalPointWithExternal(mat,internalPoint,externalPoint);
    largeImageContainer.transform.matrix = mat;
}

largeImageContainer.addEventListener(MouseEvent.MOUSE_DOWN,f_begin);
largeImageContainer.addEventListener(MouseEvent.MOUSE_UP,f_end);
function f_begin(e: MouseEvent): void {
    largeImageContainer.startDrag();
}
function f_end(e: MouseEvent): void {
    largeImageContainer.stopDrag();
}
ly0110 回答:从手势保持率角度看As3捏缩放图片

实际上这是我想要的;)保持比率,因为我将重点放在Y而不是X上。

largeImageContainer.scaleX *= event.scaleY;
largeImageContainer.scaleY *= event.scaleY;
本文链接:https://www.f2er.com/2962474.html

大家都在问