我正在使用TransformGestureEvent和StartDrag和StopDrag事件,並遇到一些問題。ActionScript 3縮放和滾動問題
我會盡我所能解釋,當我放大時,我的圖像放大,並在放大時居中。放大後,我開始拖到圖像的頂部,當我到達頂部時,我現在不能滾動更多(所有內容都按預期工作到目前爲止),但是當我縮小圖像時,y軸不再處於頂部,我的形象應該是一個空白的空間。
這裏是我的代碼:
mapMC.addEventListener(TransformGestureEvent.GESTURE_ZOOM, zoom);
mapMC.addEventListener(MouseEvent.MOUSE_DOWN, dragStart);
mapMC.addEventListener(MouseEvent.MOUSE_UP, dragEnd);
//Zooming Method
function zoom (event:TransformGestureEvent):void{
var locX:Number=event.localX;
var locY:Number=event.localY;
var stX:Number=event.stageX;
var stY:Number=event.stageY;
var prevScaleX:Number=mapMC.scaleX;
var prevScaleY:Number=mapMC.scaleY;
var mat:Matrix;
var externalPoint=new Point(stX,stY);
var internalPoint=new Point(locX,locY);
mapMC.scaleX *= event.scaleX;
mapMC.scaleY *= event.scaleY;
if(mapMC.scaleX > 6){
mapMC.scaleX=prevScaleX;
mapMC.scaleY=prevScaleY;
}
if(mapMC.scaleY > 6){
mapMC.scaleX=prevScaleX;
mapMC.scaleY=prevScaleY;
}
if(mapMC.scaleX < 1){
mapMC.scaleX=1;
mapMC.scaleY=1;
}
if(mapMC.scaleY < 1){
mapMC.scaleX=1;
mapMC.scaleY=1;
}
mat=mapMC.transform.matrix.clone();
MatrixTransformer.matchInternalPointWithExternal(mat,internalPoint,externalPoint);
mapMC.transform.matrix=mat;
}
//Dragging Start Method
function dragStart(e:MouseEvent):void
{
mapMC.startDrag(false, new Rectangle(0,0,-mapMC.width + stage.stageWidth, -mapMC.height + stage.stageHeight));
}
//Dragging Stop Method
function dragEnd(e:MouseEvent):void
{
mapMC.stopDrag();
}
我所預期的情形是放大中心,能夠在我的startDrag矩形內滾動並縮小上,而圖像的頂部中心停留在舞臺的頂部,圖像的左側停留在舞臺的左側。
我試圖在我的縮放方法添加的這兩行代碼,它的工作原理,但我不能放大中心:
mapMC.y = 0;
mapMC.x = 0;
下面是一個示例項目的鏈接會告訴你我是什麼意思
https://drive.google.com/open?id=0B-p_9V3gzZZTcXpQZzI0RU9ZY0k
你想讓地圖保持比例,還是應該可以獨立於y軸縮放X軸? –