createjs center zoom point localtoglobal

时间:2017-08-26 22:25:01

标签: zoom responsive createjs

我在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)

1 个答案:

答案 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);

这只是一个例子,我相信有更纯粹的数学方法。

干杯。