我在实现地图拖拽的过程中,采用的摄像头(view)不动,地图(map)移动的方式
但是在计算过程中:
/**
* 单点触摸-地图拖拽
*/
private dealMove(dir: Vec3, map: Node, container: Node): void {
let edge: { left, right, top, bottom } = this.calculateEdge(map, container)
let pos_x = map.getx()
let pos_y = map.gety()
//向右拖拽
if (dir.x > 0) {
pos_x += dir.x
map.setx(pos_x)
if (pos_x > edge.left) {
map.setx(edge.left)
}
}
// 向左拖拽
if (dir.x < 0) {
pos_x += dir.x
map.setx(pos_x)
if (pos_x < edge.right) {
map.setx(edge.right)
}
}
// 向上拖拽
if (dir.y > 0) {
pos_y += dir.y
map.sety(pos_y)
if (pos_y > edge.bottom) {
map.sety(edge.bottom)
}
}
// 向下拖拽
if (dir.y < 0) {
pos_y += dir.y
map.sety(pos_y)
if (pos_y < edge.top) {
map.sety(edge.top)
}
}
public calculateEdge(map: Node, view: Node): any {
//horizontalDistance:600.5
let horizontalDistance: number = (view.getWidth() - map.getWidth() * map.getScale().x) / 2
//verticalDistance:274
let verticalDistance: number = (view.getHeight() - map.getHeight() * map.getScale().y) / 2
let left: number = 0-horizontalDistance
let right: number = horizontalDistance
let top: number = verticalDistance
let bottom: number = 0 - verticalDistance
return { left, right, top, bottom }
}
长屏手机 都会出现上下边界触碰不对的问题
