我在createjs中设置了一个带有响应画布的地图。我想要做的是使地图可缩放,但也可以拖动。当拖动地图时,我想让它从特定的中心点进行缩放。
我认为我需要做的是计算中心点相对于地图的位置,然后将地图regX / regY设置为该点(我认为我需要重置为地图的x / y)补偿regX / Y偏移量。
由于舞台缩放,我甚至很难弄清楚中心位置,因为全局坐标似乎有机会进行缩放。我把中心点放在了持有人身上:
exportRoot.pointHolder.tmpPt
并且地图包含在:
中exportRoot.map_main_sym
我需要弄清楚是什么是map_main_sym本地x / y值relativie(即直接在(exportRoot.pointHolder.tmpPt.x,exportRoot.pointHolder.tmpPt.y)
答案 0 :(得分:0)
我不建议在缩放时更改注册点。更好的方法是确定与鼠标的距离,并确定在缩放时容器/对象的平移量。
以下是我方便使用的地图工具的摘录:
// Find the mouse point INSIDE the mapView
var point = new createjs.Point(this.stage.mouseX, this.stage.mouseY);
var localPoint = this.mapView.globalToLocal(point.x, point.y);
// Scale the Map View
if(event.wheelDeltaY > 0){ // This is part of a mousewheel event
// zoom in
this.mapView.scaleX = this.mapView.scaleY *= 1.3;
} else {
this.mapView.scaleX = this.mapView.scaleY /= 1.3;
}
// Find where the original point is now
var globalPoint = this.mapView.localToGlobal(localPoint.x, localPoint.y);
// Move the map by the difference
this.mapView.x -= (globalPoint.x - point.x);
this.mapView.y -= (globalPoint.y - point.y);
这只是一个例子,我相信有更纯粹的数学方法。
干杯。