相关疑难解决方法(0)

在画布中的鼠标位置放大/缩小

我正在尝试使用 p5.js 实现缩放功能。当前缩放级别以及 x 和 y 位置存储在controls.viewobject. 默认或 (0, 0) 位置在左上角。问题是在放大/缩小时调整 x 和 y 位置值,以便无论视图的当前位置是什么,它都会停留在缩放点或鼠标光标处。

缩放和平移在draw函数中由 x、y 和缩放值执行,因此必须直接修改这些值(不能直接在画布上运行平移)。这是Codepen

let canvas, circles;
const controls = {
  view: {
    x: 0,
    y: 0,
    zoom: 1
  },
  viewPos: {
    prevX: null,
    prevY: null,
    isDragging: false
  },
}

function setup() {
  canvas = createCanvas(window.innerWidth, window.innerHeight);
  canvas.mouseWheel(e => Controls.zoom(controls).worldZoom(e))
  circles = Circle.create(100)
}

function draw() {
  background(100)
  translate(controls.view.x, controls.view.y);
  scale(controls.view.zoom)
  circles.forEach(circle => circle.show());
}

window.mousePressed = e => Controls.move(controls).mousePressed(e) …
Run Code Online (Sandbox Code Playgroud)

javascript canvas p5.js

2
推荐指数
1
解决办法
2716
查看次数

标签 统计

canvas ×1

javascript ×1

p5.js ×1