我正在通过JSON数据和CreateJS创建Canvas中的练习的大项目。在HTML 5中使用它的目的是不必为您的手机使用单独的应用程序,您始终可以使用该网站。CreateJS - 缩放画布不会缩放鼠标坐标
一切工作正常,但在移动画布被重新调整到全屏。这是通过检查屏幕尺寸做的,如果它小到可以移动画布是通过这个代码缩放:
// browser viewport size
var w = window.innerWidth;
var h = window.innerHeight;
// stage dimensions
var ow = canvasWidth;
var oh = canvasHeight;
// keep aspect ratio
var scale = Math.min(w/ow, h/oh);
stage.scaleX = scale;
stage.scaleY = scale;
// adjust canvas size
stage.canvas.width = ow * scale;
stage.canvas.height = oh * scale;
这对于大多数练习的伟大工程,像测验和这样的,在这里你有要做的是点击一个按钮。不过,我们也有一些拖放练习,还有一个练习,您可以在其中绘制颜色。这些当然要依靠鼠标坐标才能正常工作。问题是,当画布缩放时,鼠标坐标是而不是。所以当你拖动一个物品或者尝试绘制时,会发生偏移。所以你的绘图看起来就像你点击的左边,当拿起一个可拖动的对象时,它不会正确地跟随你的点击。
如果我从一开始就编写代码,我很确定我将如何重新计算坐标,但是由于它们是由CreateJS计算的,所以我不知道该怎么去做。
这是由人大约一年前here,其中有人提出这个解决方案报告为一个问题:
我能够通过添加顶层容器和附上我的位图,为解决此并对其进行缩放。
整个练习是在一个容器内,我试图扩展,但无济于事。我也尝试将比例作为参数发送给创建的练习的各个部分(例如菜单,背景图像等),而不是将它们全部缩放在一起,并且似乎能够正常工作,因为我可以排除绘图层。但由于它是一个大型项目,许多不同的练习和部件需要缩放,所以需要一段时间才能实现,而且我不确定这是一个可行的解决方案。
有没有一种简单的方法来重新调整鼠标坐标以及CreateJS中的画布大小?我在这里找到了纯JavaScript的例子,但是对于CreateJS尤其没有。
不错的解决方案:) – Hydro