gpt4 book ai didi

javascript - 将鼠标置于 Canvas 上移动图像的中心

转载 作者:行者123 更新时间:2023-12-02 17:33:31 25 4
gpt4 key购买 nike

我正在为学校制作一个追星游戏。我希望环境能够动态变化,这样当我调整浏览器窗口大小时,游戏也会随之调整大小。

我得到了以下运行代码: http://jsfiddle.net/xigolle/yA74f/

唯一的问题是鼠标不是以女巫为中心。让鼠标位于每种尺寸的中心的最佳方法是什么?

问题肯定出在这部分:

 ctx.drawImage(img, this.x, this.y, canvas.width/10, canvas.height/10);

我从事件监听器获得的浏览器窗口的大小,该事件监听器在我调整大小时激活。

并将该值放入canvas.width和canvas.height中。

希望大家能帮助我:)

如有任何疑问或不清楚之处,请询问:)

最佳答案

你有两个问题

第一个是你对drawImage的使用

ctx.drawImage(img, this.x, this.y, canvas.width/10, canvas.height/10);

这将以不保持比例的方式重新缩放女巫图像,这就是为什么在调整窗口大小时女巫会挤压或膨胀

您应该根据原始图像大小和原始 Canvas 大小的比率来调整图像大小。然后使用该比率乘以新的 Canvas 尺寸来获得正确的图像尺寸。

//Original canvas width/height
var initialWidth = 500, initialHeight = 500;
var initialImgWidth = 120, initialImgHeight = 65;
var wRatio = initialImgWidth/initialWidth, hRatio = initialImgHeight/initialHeight;
...
ctx.drawImage(img, this.x, this.y, canvas.width*wRatio, canvas.height*hRatio);

现在我们已经解决了图像大小调整问题,现在我们可以将图像放在鼠标上居中了现在要居中,您必须将鼠标 x/y 分别减去调整后的女巫宽度/高度的 1/2

Witch.x = event.pageX-((canvas.width*wRatio)/2);
Witch.y = event.pageY-((canvas.height*hRatio)/2);

JSFiddle

编辑

我的重新缩放计算是错误的,现在要缩放图像,只需按其原始尺寸缩放即可

var imgWScale = initialImgWidth/2;
var imgHScale = initialImgHeight/2;
...
ctx.drawImage(img, this.x, this.y, imgWScale,imgHScale);
...
Witch.x = event.pageX-(imgWScale/2);
Witch.y = event.pageY-(imgHScale/2);

只需记住居中,获取图像宽度/高度并将其分成两半,然后从鼠标坐标中获取。

关于javascript - 将鼠标置于 Canvas 上移动图像的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22840891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com