У меня есть скрипт, он отлично работает, когда я использую жест для увеличения и уменьшения масштаба, но иногда, когда я увеличиваю и уменьшаю масштаб в другой позиции жеста, мой объект снова перемещается не по x, y (0,0),Этот скрипт должен иметь возможность прокручивать и увеличивать функцию уменьшения масштаба, всегда перемещаясь в другое место, когда я уменьшаю масштаб в другой точке жеста.Может кто-нибудь помочь мне, пожалуйста.пожалуйста.
Мой проект фотографий введите описание изображения здесь
Это мой сценарий
ccp.addEventListener("mouseDown", mdp);
function mdp(evt:*):void
{
ccp.startDrag(false, new Rectangle(ccp.x, 72, 0, 36 * -37));
stage.addEventListener("mouseUp", mup);
}
function mup(evt:*):void
{
ccp.stopDrag();
stage.removeEventListener("mouseUp", mup);
}
//__________________________________________________
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 x.ccp = prevScaleX;
var y.ccp = prevScaleY;
var prevScaleX:Number=ccp.scaleX;
var prevScaleY:Number=ccp.scaleY;
var mat:Matrix;
var externalPoint=new Point(stX,stY);
var internalPoint=new Point(locX,locY);
ccp.scaleX *= event.scaleX;
ccp.scaleY *= event.scaleY;
if(event.scaleX > 1 && ccp.scaleX > 0.5){
ccp.scaleX=prevScaleX;
ccp.scaleY=prevScaleY;
}
if(event.scaleY > 1 && ccp.scaleY > 0.5){
ccp.scaleX=prevScaleX;
ccp.scaleY=prevScaleY;
}
if(event.scaleX < 1.1 && ccp.scaleX < 0.2127){
ccp.scaleX=prevScaleX;
ccp.scaleY=prevScaleY;
}
if(event.scaleY < 1.1 && ccp.scaleY < 0.2127){
ccp.scaleX=prevScaleX;
ccp.scaleY=prevScaleY;
}
mat=ccp.transform.matrix.clone();
MatrixTransformer.matchInternalPointWithExternal(mat,internalPoint,externalPoint);
ccp.transform.matrix=mat;
}