如何从点手势AS3的双指缩放图片缩放、手势、图片

2023-09-08 13:33:39 作者:心跳之外☆ミ

我创建一个图像对象,我才得以放大。 但图像只能在考虑到图像的中心。 所以我怎么可以放大手势??

点的图像

  picture.addEventListener(TransformGestureEvent.GESTURE_ZOOM,onZoom);

功能onZoom(E:的TransformGestureEvent){
    picture.scaleX * =(e.scaleX + e.scaleY)/ 2;
    picture.scaleY * =(e.scaleX + e.scaleY)/ 2;
}
 

解决方案

试试这个...

 进口flash.events.TransformGestureEvent;
进口flash.ui.Multitouch;
进口flash.ui.MultitouchInputMode;
进口fl.motion.MatrixTransformer;

Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM,onZoom);
功能onZoom(事件:的TransformGestureEvent):无效
{
    //trace(e.localX);
    VAR locX:数= event.localX;
    VAR locY:数= event.localY;
    VAR STX:数= event.stageX;
    VAR麦粒肿:数= event.stageY;
    VAR prevScaleX:数= gambar.scaleX;
    VAR prevScaleY:数= gambar.scaleY;
    VAR垫:矩阵;
    VAR externalPoint =新的点(STX,STY);
    VAR internalPoint =新的点(locX,locY);

    gambar.scaleX * = event.scaleX;
    gambar.scaleY * = event.scaleY;

    如果(event.scaleX→1&安培;&安培; gambar.scaleX→6){
    gambar.scaleX = prevScaleX;
    gambar.scaleY = prevScaleY;
    }

    如果(event.scaleY→1&安培;&安培; gambar.scaleY→6){
    gambar.scaleX = prevScaleX;
    gambar.scaleY = prevScaleY;
    }

    如果(event.scaleX< 1.1&安培;&安培; gambar.scaleX< 1){
    gambar.scaleX = prevScaleX;
    gambar.scaleY = prevScaleY;
    }

    如果(event.scaleY< 1.1&安培;&安培; gambar.scaleY< 1){
    gambar.scaleX = prevScaleX;
    gambar.scaleY = prevScaleY;

    }
    垫= gambar.transform.matrix.clone();
    MatrixTransformer.matchInternalPointWithExternal(垫,internalPoint,externalPoint);
    gambar.transform.matrix =垫;
}

gambar.addEventListener(的MouseEvent.MOUSE_DOWN,f_begin);
gambar.addEventListener(侦听MouseEvent.MOUSE_UP,f_end);
功能f_begin(E:MouseEvent)方法:无效
{
    gambar.startDrag();
}
功能f_end(E:MouseEvent)方法:无效
{
    gambar.stopDrag();
}
 

顺便说一句你的PIC是太可爱了..:D

在CAD中怎样用键盘很快的平移 缩小 放大图象

I create an image object and I was able to enlarge . but images can only be in view of the center of the image . so how I can enlarge the image of the point of the gesture ??

picture.addEventListener(TransformGestureEvent.GESTURE_ZOOM, onZoom);

function onZoom(e:TransformGestureEvent){
    picture.scaleX *= (e.scaleX+e.scaleY)/2;
    picture.scaleY *= (e.scaleX+e.scaleY)/2;
}

解决方案

Try this...

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=gambar.scaleX;
    var prevScaleY:Number=gambar.scaleY;
    var mat:Matrix;
    var externalPoint=new Point(stX,stY);
    var internalPoint=new Point(locX,locY);

    gambar.scaleX *= event.scaleX;
    gambar.scaleY *= event.scaleY;

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

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

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

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

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

gambar.addEventListener(MouseEvent.MOUSE_DOWN, f_begin);
gambar.addEventListener(MouseEvent.MOUSE_UP, f_end);
function f_begin(e:MouseEvent):void
{
    gambar.startDrag(); 
}
function f_end(e:MouseEvent):void
{
    gambar.stopDrag();
}

btw your pic is so cute.. :D