我创建一个图像对象,我才得以放大。 但图像只能在考虑到图像的中心。 所以我怎么可以放大手势??
点的图像 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
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